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

1""" 

2Tests for the cache interface. 

3""" 

4 

5import unittest 

6 

7from acspsuedo.source.cache import VariableCache, MetadataException 

8from acspsuedo.source.low.exceptions import APIException 

9from acspsuedo.datasets import ACS3 

10 

11 

12 

13class TestVariableCache(unittest.TestCase): 

14 

15 def setUp(self) -> None: 

16 self.DATASET = ACS3 

17 self.VCI = VariableCache() 

18 

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'] 

22 

23 self.HEALTH_INSURANCE_COVERAGE_TWO_OR_MORE_RACES_TBL = 'B27001G' 

24 self.TRAVEL_TIME_TO_WORK_TBL = 'C08303' 

25 self.TBLS = ['B27001G', 'C08303'] 

26 

27 def test_interface_instance(self): 

28 """ 

29 Simulate a case where the user introspects the cache interface. 

30 """ 

31 cache_obj = VariableCache(False) 

32 

33 self.assertFalse(cache_obj.cache_metadata_dfs) 

34 

35 cache_obj.cache_metadata_dfs = True 

36 

37 self.assertTrue(cache_obj.cache_metadata_dfs) 

38 

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) 

44 

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') 

50 

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') 

57 

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) 

63 

64 

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') 

71 

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') 

78 

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 ) 

89 

90 self.VCI._vars_metadata( 

91 self.DATASET, 

92 2011, 

93 self.VARS, 

94 self.TBLS 

95 ) 

96 

97 def test_fetch_vars_fmtter_failed(self): 

98 """ 

99 Simulate a failed variable-fetch formatter. 

100 """ 

101 FOO = 'foo' 

102 BAR = 'bar' 

103 

104 # Non-existent variable 

105 with self.assertRaises(MetadataException): 

106 self.VCI._vars_metadata( 

107 self.DATASET, 

108 2011, 

109 FOO, 

110 ) 

111 

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 ) 

120 

121 # Lack of variables and tables 

122 with self.assertRaises(APIException): 

123 self.VCI._vars_metadata( 

124 self.DATASET, 

125 2011 

126 ) 

127 

128 

129 

130if __name__ == '__main__': 

131 unittest.main()