@@ -24,34 +24,209 @@ def filmology_management_db_mock():
2424 yield db_mock
2525
2626 db_mock .stop ()
27- if os .path .exists ("filmology_management.db" ):
28- os .remove ("filmology_management.db" )
27+
28+ os .remove ("filmology_management.db" )
29+
30+ def seed_database (url ):
31+ from sqlite3 import connect
32+ connect (url ).executescript ("""INSERT INTO Director (oid,creator,nationality,surname,created,last_editor,name,birth,description,modified) VALUES
33+ ('Director:8721cddb-efe4-11ef-b8e9-60dd8ec76433','Michael Thompson','American','Thompson','2025-02-20','Sarah Lee','Michael','1985-08-30','A data scientist with expertise in machine learning and AI.','2025-02-22T14:45:00Z');
34+ INSERT INTO Actor (oid,creator,nationality,surname,created,last_editor,name,birth,description,modified,Movie_oid) VALUES
35+ ('Actor:0393e0e8-efe4-11ef-875b-60dd8ec76433','Alice Johnson','Canadian','Johnson','2025-02-20','Bob Smith','Alice','1990-05-15','A software engineer specializing in backend development.','2025-02-21T10:15:30Z',NULL);
36+ INSERT INTO Date (oid,"year",name) VALUES
37+ ('Date:c2aa3824-efdc-11ef-a8ca-60dd8ec76433','2004','bday'),
38+ ('Date:faa3b1b4-efdb-11ef-8b1b-60dd8ec76433','2005','new day');
39+ INSERT INTO Genre (oid,name) VALUES
40+ ('Genre:3b053d2a-ae98-11ef-bd08-60dd8ec76433','horror'),
41+ ('Genre:8304ae3b-efdd-11ef-bd39-60dd8ec76433','tragedy');
42+ INSERT INTO Movie (oid,date,country,creator,color,created,last_editor,runtime,description,URL,plot,name,alias,modified,CompositionPosterPrimary_oid,Date_oid) VALUES
43+ ('Movie:efba28d6-efe0-11ef-b7f9-60dd8ec76433','2025-02-22','Canada','Jane Doe','#FF5733','2025-02-20','John Smith','120 minutes','This is a sample project demonstrating JSON schema usage.','https://www.example.com/sample_project','A brief overview of the project''s objectives and scope.','Sample Project','sample_project','2025-02-21T15:30:00Z','Poster:f5698d56-efdb-11ef-a458-60dd8ec76433','Date:c2aa3824-efdc-11ef-a8ca-60dd8ec76433');
44+ INSERT INTO Poster (oid,name) VALUES
45+ ('Poster:f5698d56-efdb-11ef-a458-60dd8ec76433','a poster'),
46+ ('Poster:faa3b1b4-efdb-11ef-8b1b-60dd8ec76433','another poster');
47+ """ ).close ()
2948
3049@pytest .mark .usefixtures ("filmology_management_db_mock" )
31- def test_post_director (client_mock , test_environment ):
50+ def test_post_director_lifecycle (client_mock , test_environment ):
3251 request , response , _ = test_environment
3352
3453 filmology_management_facade = initialize_facade (
35- "filmology_app.components.FilmologyManagement.FilmologyManagement" ,
54+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade. FilmologyManagement" ,
3655 request ,
3756 response ,
3857 )
3958
59+ seed_database ("filmology_management.db" )
60+
4061 request .set_value ("client" , client_mock )
4162
4263 request .set_value ("body" , json .dumps ({
43- "creator" : "John Doe" ,
64+ "created" : "2025-02-20" ,
65+ "creator" : "Michael Thompson" ,
66+ "last_editor" : "Sarah Lee" ,
67+ "modified" : "2025-02-22T14:45:00Z" ,
68+ "name" : "Michael" ,
69+ "description" : "A data scientist with expertise in machine learning and AI." ,
70+ "surname" : "Thompson" ,
71+ "birth" : "1985-08-30" ,
4472 "nationality" : "American" ,
45- "surname" : "Doe" ,
46- "created" : "2023-01-01" ,
47- "last_editor" : "Jane Smith" ,
48- "name" : "John" ,
49- "birth" : "1970-01-01" ,
50- "description" : "A well-known director" ,
51- "modified" : "2023-01-02"
52- }))
73+ }).encode ())
5374
5475 filmology_management_facade .execute ("POSTDirector" )
5576
5677 assert len (response .get_value ("message" )) == 1
57- #assert response.get_value("message")[0] == "Director added successfully"
78+ assert response .get_value ("message" )[0 ].name == "Michael"
79+ assert response .get_value ("message" )[0 ].surname == "Thompson"
80+ assert response .get_value ("message" )[0 ].birth == "1985-08-30"
81+ assert response .get_value ("message" )[0 ].nationality == "American"
82+ assert response .get_value ("message" )[0 ].created == "2025-02-20"
83+ assert response .get_value ("message" )[0 ].creator == "Michael Thompson"
84+ assert response .get_value ("message" )[0 ].last_editor == "Sarah Lee"
85+ assert response .get_value ("message" )[0 ].description == "A data scientist with expertise in machine learning and AI."
86+ assert response .get_value ("message" )[0 ].modified == "2025-02-22T14:45:00Z"
87+
88+ @pytest .mark .usefixtures ("filmology_management_db_mock" )
89+ def test_get_director (client_mock , test_environment ):
90+ request , response , _ = test_environment
91+
92+ filmology_management_facade = initialize_facade (
93+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade.FilmologyManagement" ,
94+ request ,
95+ response ,
96+ )
97+
98+ seed_database ("filmology_management.db" )
99+
100+ request .set_value ("client" , client_mock )
101+
102+ filmology_management_facade .execute ("GETDirector" )
103+
104+ assert len (response .get_value ("message" )) == 1
105+ assert response .get_value ("message" )[0 ].name == "Michael"
106+ assert response .get_value ("message" )[0 ].surname == "Thompson"
107+ assert response .get_value ("message" )[0 ].birth == "1985-08-30"
108+ assert response .get_value ("message" )[0 ].nationality == "American"
109+ assert response .get_value ("message" )[0 ].created == "2025-02-20"
110+ assert response .get_value ("message" )[0 ].creator == "Michael Thompson"
111+
112+ @pytest .mark .usefixtures ("filmology_management_db_mock" )
113+ def test_post_movie (client_mock , test_environment ):
114+ request , response , _ = test_environment
115+
116+ filmology_management_facade = initialize_facade (
117+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade.FilmologyManagement" ,
118+ request ,
119+ response ,
120+ )
121+
122+ seed_database ("filmology_management.db" )
123+
124+ request .set_value ("client" , client_mock )
125+
126+ request .set_value ("body" , json .dumps ({
127+ "created" : "2025-02-20" ,
128+ "creator" : "Jane Doe" ,
129+ "last_editor" : "John Smith" ,
130+ "modified" : "2025-02-21T15:30:00Z" ,
131+ "name" : "Sample Project" ,
132+ "description" : "This is a sample project demonstrating JSON schema usage." ,
133+ "alias" : "sample_project" ,
134+ "plot" : "A brief overview of the project's objectives and scope." ,
135+ "color" : "#FF5733" ,
136+ "runtime" : "120 minutes" ,
137+ "country" : "Canada" ,
138+ "date" : "2025-02-22" ,
139+ "URL" : "https://www.example.com/sample_project" ,
140+ "CompositionPosterPrimary" : "Poster:faa3b1b4-efdb-11ef-8b1b-60dd8ec76433" ,
141+ "Date" : "Date:faa3b1b4-efdb-11ef-8b1b-60dd8ec76433" ,
142+ }).encode ())
143+
144+ filmology_management_facade .execute ("POSTMovie" )
145+
146+ assert len (response .get_value ("message" )) == 1
147+ assert response .get_value ("message" )[0 ].name == "Sample Project"
148+ assert response .get_value ("message" )[0 ].alias == "sample_project"
149+ assert response .get_value ("message" )[0 ].plot == "A brief overview of the project's objectives and scope."
150+ assert response .get_value ("message" )[0 ].color == "#FF5733"
151+ assert response .get_value ("message" )[0 ].runtime == "120 minutes"
152+ assert response .get_value ("message" )[0 ].country == "Canada"
153+ assert response .get_value ("message" )[0 ].date == "2025-02-22"
154+ assert response .get_value ("message" )[0 ].URL == "https://www.example.com/sample_project"
155+ assert response .get_value ("message" )[0 ].created == "2025-02-20"
156+ assert response .get_value ("message" )[0 ].creator == "Jane Doe"
157+ assert response .get_value ("message" )[0 ].last_editor == "John Smith"
158+ assert response .get_value ("message" )[0 ].modified == "2025-02-21T15:30:00Z"
159+
160+ @pytest .mark .usefixtures ("filmology_management_db_mock" )
161+ def test_get_movies (client_mock , test_environment ):
162+ request , response , _ = test_environment
163+
164+ filmology_management_facade = initialize_facade (
165+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade.FilmologyManagement" ,
166+ request ,
167+ response ,
168+ )
169+
170+ seed_database ("filmology_management.db" )
171+
172+ request .set_value ("client" , client_mock )
173+
174+ filmology_management_facade .execute ("GETMovie" )
175+
176+ assert len (response .get_value ("message" )) == 1
177+ assert response .get_value ("message" )[0 ].name == "Sample Project"
178+ assert response .get_value ("message" )[0 ].alias == "sample_project"
179+ assert response .get_value ("message" )[0 ].plot == "A brief overview of the project's objectives and scope."
180+ assert response .get_value ("message" )[0 ].color == "#FF5733"
181+ assert response .get_value ("message" )[0 ].runtime == "120 minutes"
182+ assert response .get_value ("message" )[0 ].country == "Canada"
183+ assert response .get_value ("message" )[0 ].date == "2025-02-22"
184+ assert response .get_value ("message" )[0 ].URL == "https://www.example.com/sample_project"
185+ assert response .get_value ("message" )[0 ].created == "2025-02-20"
186+ assert response .get_value ("message" )[0 ].creator == "Jane Doe"
187+ assert response .get_value ("message" )[0 ].last_editor == "John Smith"
188+
189+ @pytest .mark .usefixtures ("filmology_management_db_mock" )
190+ def test_post_date (client_mock , test_environment ):
191+ request , response , _ = test_environment
192+
193+ filmology_management_facade = initialize_facade (
194+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade.FilmologyManagement" ,
195+ request ,
196+ response ,
197+ )
198+
199+ seed_database ("filmology_management.db" )
200+
201+ request .set_value ("client" , client_mock )
202+
203+ request .set_value ("body" , json .dumps ({
204+ "year" : "2005" ,
205+ "name" : "new day" ,
206+ }).encode ())
207+
208+ filmology_management_facade .execute ("POSTDate" )
209+
210+ assert len (response .get_value ("message" )) == 1
211+ assert response .get_value ("message" )[0 ].year == "2005"
212+ assert response .get_value ("message" )[0 ].name == "new day"
213+
214+ @pytest .mark .usefixtures ("filmology_management_db_mock" )
215+ def test_get_date (client_mock , test_environment ):
216+ request , response , _ = test_environment
217+
218+ filmology_management_facade = initialize_facade (
219+ "filmology_app.components.FilmologyManagement.FilmologyManagement_facade.FilmologyManagement" ,
220+ request ,
221+ response ,
222+ )
223+
224+ seed_database ("filmology_management.db" )
225+
226+ request .set_value ("client" , client_mock )
227+
228+ filmology_management_facade .execute ("GETDate" )
229+
230+ assert len (response .get_value ("message" )) == 2
231+ assert response .get_value ("message" )[1 ].year == "2005"
232+ assert response .get_value ("message" )[1 ].name == "new day"
0 commit comments