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