Coverage for tests / test_cache.py: 98%
48 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-11 16:02 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-11 16:02 +0000
1"""
2Tests for the cache interface.
3"""
5import unittest
7from acspsuedo.source.cache import VariableCache, MetadataException
8from acspsuedo.source.low.exceptions import APIException
9from acspsuedo.datasets import ACS3
13class TestVariableCache(unittest.TestCase):
15 def setUp(self) -> None:
16 self.DATASET = ACS3
17 self.VCI = VariableCache()
19 self.MEDIAN_INCOME_BY_NATIVITY_VAR = 'B06011_001E'
20 self.TOTAL_TRAVELING_TO_WORK_BY_AUTOMOBILE_VAR = 'C08301_002E'
21 self.VARS = ['B06011_001E', 'C08301_002E']
23 self.HEALTH_INSURANCE_COVERAGE_TWO_OR_MORE_RACES_TBL = 'B27001G'
24 self.TRAVEL_TIME_TO_WORK_TBL = 'C08303'
25 self.TBLS = ['B27001G', 'C08303']
27 def test_interface_instance(self):
28 """
29 Simulate a case where the user introspects the cache interface.
30 """
31 cache_obj = VariableCache(False)
33 self.assertFalse(cache_obj.cache_metadata_dfs)
35 cache_obj.cache_metadata_dfs = True
37 self.assertTrue(cache_obj.cache_metadata_dfs)
39 def test_fetch_variable_metadata_df(self):
40 """
41 Simulate a case where a user queries a metadata on all variables.
42 """
43 self.VCI.var_metadata_df(self.DATASET, 2011)
45 def test_fetch_table_metadata_df(self):
46 """
47 Simulate a case where a user queries a singular table.
48 """
49 self.VCI.tbl_metadata_df(self.DATASET, 2011, 'B17015')
51 def test_fetch_non_existent_table_metadata_df(self):
52 """
53 Simulate a case where a user queries a non-existent table.
54 """
55 with self.assertRaises(APIException):
56 self.VCI.tbl_metadata_df(self.DATASET, 2011, 'foo bar')
58 def test_fetch_all_tables_metadata(self):
59 """
60 Simulate a case of querying all tables.
61 """
62 self.VCI._fetch_all_tables(self.DATASET, 2011)
65 def test_fetch_table_metadata_df_in_cache(self):
66 """
67 Simulate a case of fetching a cached table a non-existent singular table.
68 """
69 self.VCI.tbl_metadata_df(self.DATASET, 2011, 'B17016')
70 self.VCI.tbl_metadata_df(self.DATASET, 2011, 'B17016')
72 def test_fetch_table_metadata_df_failed(self):
73 """
74 Simulate a case of querying a non-existent singular table.
75 """
76 with self.assertRaises(APIException):
77 self.VCI.tbl_metadata_df(self.DATASET, 2011, 'hello world')
79 def test_fetch_vars_fmtter(self):
80 """
81 Simulate the variable-fetch formatter.
82 """
83 self.VCI._vars_metadata(
84 self.DATASET,
85 2011,
86 self.MEDIAN_INCOME_BY_NATIVITY_VAR,
87 self.HEALTH_INSURANCE_COVERAGE_TWO_OR_MORE_RACES_TBL
88 )
90 self.VCI._vars_metadata(
91 self.DATASET,
92 2011,
93 self.VARS,
94 self.TBLS
95 )
97 def test_fetch_vars_fmtter_failed(self):
98 """
99 Simulate a failed variable-fetch formatter.
100 """
101 FOO = 'foo'
102 BAR = 'bar'
104 # Non-existent variable
105 with self.assertRaises(MetadataException):
106 self.VCI._vars_metadata(
107 self.DATASET,
108 2011,
109 FOO,
110 )
112 # Non-existent table
113 with self.assertRaises(MetadataException):
114 self.VCI._vars_metadata(
115 self.DATASET,
116 2011,
117 self.MEDIAN_INCOME_BY_NATIVITY_VAR,
118 BAR
119 )
121 # Lack of variables and tables
122 with self.assertRaises(APIException):
123 self.VCI._vars_metadata(
124 self.DATASET,
125 2011
126 )
130if __name__ == '__main__':
131 unittest.main()