1
+ import unittest
2
+ from inmemorydbadapter import InMemoryDBAdapter
3
+ from demo_surveys import demo_data
4
+
5
+ class TestInMemoryDBAdapter (unittest .TestCase ):
6
+ def setUp (self ):
7
+ self .session = {}
8
+ self .adapter = InMemoryDBAdapter (self .session )
9
+
10
+ def test_initialization (self ):
11
+ self .assertEqual (self .adapter .current_id , len (demo_data ["surveys" ]) + 1 )
12
+
13
+ def test_get_table_existing (self ):
14
+ self .session ["surveys" ] = [{"test" : "data" }]
15
+ table = self .adapter .get_table ("surveys" )
16
+ self .assertEqual (table , [{"test" : "data" }])
17
+
18
+ def test_get_table_new (self ):
19
+ table = self .adapter .get_table ("new_table" )
20
+ self .assertEqual (table , [])
21
+ self .assertIn ("new_table" , self .session )
22
+
23
+ def test_find_by_id_found (self ):
24
+ objects = [{"id" : "1" }, {"id" : "2" }]
25
+ result = self .adapter .find_by_id (objects , "1" )
26
+ self .assertEqual (result , {"id" : "1" })
27
+
28
+ def test_find_by_id_not_found (self ):
29
+ objects = [{"id" : "1" }]
30
+ result = self .adapter .find_by_id (objects , "2" )
31
+ self .assertIsNone (result )
32
+
33
+ def test_add_survey_with_name (self ):
34
+ new_survey = self .adapter .add_survey ("Test Survey" )
35
+ self .assertEqual (new_survey ["name" ], "Test Survey" )
36
+ self .assertEqual (new_survey ["id" ], str (len (demo_data ["surveys" ]) + 1 ))
37
+ self .assertEqual (len (self .adapter .get_table ("surveys" )), 1 )
38
+
39
+ def test_add_survey_without_name (self ):
40
+ new_survey = self .adapter .add_survey (None )
41
+ expected_name = f"{ demo_data ['default_name' ]} { self .adapter .current_id - 1 } "
42
+ self .assertEqual (new_survey ["name" ], expected_name )
43
+
44
+ def test_post_results_new_post (self ):
45
+ post_id = "123"
46
+ test_data = {"answer" : 42 }
47
+ self .adapter .post_results (post_id , test_data )
48
+ results = self .adapter .get_results (post_id )
49
+ self .assertEqual (len (results ["data" ]), 1 )
50
+ self .assertEqual (results ["data" ][0 ], test_data )
51
+
52
+ def test_post_results_existing_post (self ):
53
+ post_id = "123"
54
+ self .adapter .post_results (post_id , {"data" : 1 })
55
+ self .adapter .post_results (post_id , {"data" : 2 })
56
+ results = self .adapter .get_results (post_id )
57
+ self .assertEqual (len (results ["data" ]), 2 )
58
+
59
+ def test_get_results_not_exists (self ):
60
+ results = self .adapter .get_results ("non_existent" )
61
+ self .assertIsNone (results )
62
+
63
+ def test_delete_survey_exists (self ):
64
+ survey = {"id" : "1" , "name" : "Test" }
65
+ self .adapter .get_table ("surveys" ).append (survey )
66
+ result = self .adapter .delete_survey ("1" )
67
+ self .assertEqual (result , survey )
68
+ self .assertEqual (len (self .adapter .get_table ("surveys" )), 0 )
69
+
70
+ def test_delete_survey_not_exists (self ):
71
+ result = self .adapter .delete_survey ("999" )
72
+ self .assertIsNone (result )
73
+
74
+ def test_store_survey_update (self ):
75
+ survey = {"id" : "1" , "name" : "Old" , "json" : "{}" }
76
+ self .adapter .get_table ("surveys" ).append (survey )
77
+ updated = self .adapter .store_survey ("1" , "New" , '{"new": "data"}' )
78
+ self .assertEqual (updated ["json" ], '{"new": "data"}' )
79
+
80
+ def test_store_survey_create (self ):
81
+ survey = self .adapter .store_survey ("100" , "New Survey" , "{}" )
82
+ self .assertEqual (survey ["name" ], "New Survey" )
83
+ self .assertIn (survey , self .adapter .get_table ("surveys" ))
84
+
85
+ def test_change_name_exists (self ):
86
+ survey = {"id" : "1" , "name" : "Old" }
87
+ self .adapter .get_table ("surveys" ).append (survey )
88
+ self .adapter .change_name ("1" , "New" )
89
+ self .assertEqual (survey ["name" ], "New" )
90
+
91
+ def test_change_name_not_exists (self ):
92
+ result = self .adapter .change_name ("999" , "New" )
93
+ self .assertIsNone (result )
94
+
95
+ def test_get_surveys_initial_load (self ):
96
+ surveys = self .adapter .get_surveys ()
97
+ self .assertEqual (len (surveys ), len (demo_data ["surveys" ]))
98
+ self .assertEqual (len (self .session ["results" ]), len (demo_data ["results" ]))
99
+
100
+ def test_get_surveys_subsequent_calls (self ):
101
+ self .adapter .get_surveys ()
102
+ new_survey = self .adapter .add_survey ("Test" )
103
+ surveys = self .adapter .get_surveys ()
104
+ self .assertIn (new_survey , surveys )
105
+
106
+ def test_get_survey_exists (self ):
107
+ self .adapter .get_surveys ()
108
+ survey = self .adapter .get_survey ("1" )
109
+ self .assertEqual (survey ["id" ], "1" )
110
+
111
+ def test_get_survey_not_exists (self ):
112
+ survey = self .adapter .get_survey ("999" )
113
+ self .assertIsNone (survey )
114
+
115
+ if __name__ == '__main__' :
116
+ unittest .main ()
0 commit comments