55
66from apps .ifc_validation_models .models import ValidationRequest , ValidationTask # TODO: for now needs to be absolute!
77from apps .ifc_validation_models .models import Company , AuthoringTool , Model
8- from apps .ifc_validation_models .decorators import requires_django_user_context
9-
8+ from apps .ifc_validation_models .models import set_user_context
109
1110class ValidationModelsTestCase (TestCase ):
1211
13- @classmethod
14- def setUpTestData (cls ):
15-
16- """
17- Creates a SYSTEM user in the (in-memory) database.
18- Runs once for the whole test case.
19- """
20-
12+ def set_user_context ():
2113 user = User .objects .create (id = 1 , username = 'SYSTEM' , is_active = True )
22- user . save ( )
14+ set_user_context ( user )
2315
24- @requires_django_user_context
2516 def test_created_request_has_status_pending (self ):
2617
18+ # arrange
19+ ValidationModelsTestCase .set_user_context ()
2720 request = ValidationRequest .objects .create (
2821 file_name = 'test.ifc' ,
2922 file = 'test.ifc' ,
3023 size = 1024
3124 )
3225
26+ # act
3327 request2 = ValidationRequest .objects .get (id = request .id )
3428
29+ # assert
3530 self .assertEqual (request2 .status , ValidationRequest .Status .PENDING )
3631
37- @requires_django_user_context
3832 def test_created_request_has_created_fields (self ):
3933
34+ # arrange
35+ ValidationModelsTestCase .set_user_context ()
4036 request = ValidationRequest .objects .create (
4137 file_name = 'test2.ifc' ,
4238 file = 'test2.ifc' ,
4339 size = 1024
4440 )
4541
42+ # act
4643 request2 = ValidationRequest .objects .get (id = request .id )
4744
45+ # assert
4846 self .assertEqual (request2 .created .date (), datetime .date .today ())
4947 self .assertEqual (request2 .created_by .username , 'SYSTEM' )
5048 self .assertEqual (request2 .created_by .id , 1 )
5149 self .assertTrue (request2 .updated is None )
5250 self .assertTrue (request2 .updated_by is None )
5351
54- @requires_django_user_context
5552 def test_updated_request_has_updated_fields (self ):
5653
54+ # arrange
55+ ValidationModelsTestCase .set_user_context ()
5756 request = ValidationRequest .objects .create (
5857 file_name = 'test3.ifc' ,
5958 file = 'test3.ifc' ,
6059 size = 1024
6160 )
6261
62+ # act
6363 request2 = ValidationRequest .objects .get (id = request .id )
6464 request2 .save () # simulate update
6565
66+ # assert
6667 self .assertEqual (request2 .created .date (), datetime .date .today ())
6768 self .assertEqual (request2 .created_by .username , 'SYSTEM' )
6869 self .assertEqual (request2 .created_by .id , 1 )
6970 self .assertEqual (request2 .updated .date (), datetime .date .today ())
7071 self .assertEqual (request2 .updated_by .username , 'SYSTEM' )
7172 self .assertEqual (request2 .updated_by .id , 1 )
7273
73- @requires_django_user_context
7474 def test_created_task_has_status_pending (self ):
7575
76+ # arrange
77+ ValidationModelsTestCase .set_user_context ()
7678 request = ValidationRequest .objects .create (
7779 file_name = 'test4.ifc' ,
7880 file = 'test4.ifc' ,
7981 size = 1024
8082 )
8183
84+ # act
8285 task = ValidationTask .objects .create (
8386 request = request
8487 )
8588
8689 task2 = ValidationTask .objects .get (id = task .id )
8790
91+ # assert
8892 self .assertEqual (task2 .status , ValidationTask .Status .PENDING )
8993
90- @requires_django_user_context
9194 def test_created_tasks_can_be_navigated (self ):
9295
96+ # arrange
97+ ValidationModelsTestCase .set_user_context ()
9398 request = ValidationRequest .objects .create (file_name = 'test5.ifc' , file = 'test5.ifc' , size = 1024 )
9499 task1 = ValidationTask .objects .create (request = request )
95100 task2 = ValidationTask .objects .create (request = request )
@@ -99,26 +104,31 @@ def test_created_tasks_can_be_navigated(self):
99104 ValidationTask .objects .create (request = request2 )
100105 ValidationTask .objects .create (request = request2 )
101106
107+ # act
102108 all_tasks = ValidationTask .objects .all ()
103109 tasks = ValidationTask .objects .filter (request__id = request .id )
104110
111+ # assert
105112 self .assertEqual (all_tasks .count (), 5 )
106113 self .assertEqual (tasks .count (), 3 )
107114 self .assertEqual (task1 .id , tasks [0 ].id )
108115 self .assertEqual (task2 .id , tasks [1 ].id )
109116 self .assertEqual (task3 .id , tasks [2 ].id )
110117
111- @requires_django_user_context
112118 def test_newly_created_tool_and_model_can_be_navigated (self ):
113119
120+ # arrange
121+ ValidationModelsTestCase .set_user_context ()
114122 user = User .objects .get (id = 1 )
115123 company = Company .objects .create (name = 'Acme Inc.' )
116124 tool = AuthoringTool .objects .create (name = 'Tool XYZ' , version = '1.0-alpha' , company = company )
117125 model = Model .objects .create (file_name = 'test_123.ifc' , size = 2048 , produced_by = tool , uploaded_by = user )
118126 model2 = Model .objects .create (file_name = 'test_xyz.ifc' , size = 4096 , produced_by = tool , uploaded_by = user )
119127
128+ # act
120129 all_tools = AuthoringTool .objects .all ()
121130
131+ # assert
122132 self .assertEqual (all_tools .count (), 1 )
123133 self .assertEqual (all_tools [0 ].id , tool .id )
124134 self .assertEqual (tool .company .name , company .name )
@@ -128,9 +138,9 @@ def test_newly_created_tool_and_model_can_be_navigated(self):
128138 self .assertEqual (user .models .count (), 2 )
129139 self .assertEqual (user .models .all ()[1 ].file_name , model2 .file_name )
130140
131- @requires_django_user_context
132141 def test_find_tool_by_full_name_should_succeed (self ):
133142
143+ ValidationModelsTestCase .set_user_context ()
134144 company1 = Company .objects .create (name = 'Acme Inc.' )
135145 tool1 = AuthoringTool .objects .create (name = 'Tool ABC' , version = '1.0' , company = company1 )
136146 tool2 = AuthoringTool .objects .create (name = 'Tool ABC' , version = '2.0-alpha' , company = company1 )
@@ -139,13 +149,13 @@ def test_find_tool_by_full_name_should_succeed(self):
139149 tool3 = AuthoringTool .objects .create (name = 'App' , version = None , company = company2 )
140150 tool4 = AuthoringTool .objects .create (name = 'App' , version = '2024' , company = company2 )
141151
142- name_to_find = 'Acme Inc. Tool ABC - 1.0'
152+ name_to_find = 'Acme Inc. - Tool ABC - 1.0'
143153 found_tool = AuthoringTool .find_by_full_name (name_to_find )
144154 self .assertIsNotNone (found_tool )
145155 self .assertIsInstance (found_tool , AuthoringTool )
146156 self .assertEqual (found_tool .name , tool1 .name )
147157
148- name_to_find = 'Acme Inc. Tool ABC 1.0'
158+ name_to_find = 'Acme Inc. - Tool ABC 1.0'
149159 found_tool = AuthoringTool .find_by_full_name (name_to_find )
150160 self .assertIsNotNone (found_tool )
151161 self .assertIsInstance (found_tool , AuthoringTool )
@@ -161,7 +171,7 @@ def test_find_tool_by_full_name_should_succeed(self):
161171 self .assertIsInstance (found_tool , AuthoringTool )
162172 self .assertEqual (found_tool .name , tool3 .name )
163173
164- name_to_find = 'PyCAD Limited App 2024'
174+ name_to_find = 'PyCAD Limited - App 2024'
165175 found_tool = AuthoringTool .find_by_full_name (name_to_find )
166176 self .assertIsNotNone (found_tool )
167177 self .assertIsInstance (found_tool , AuthoringTool )
@@ -171,9 +181,9 @@ def test_find_tool_by_full_name_should_succeed(self):
171181 found_tool = AuthoringTool .find_by_full_name (name_to_find )
172182 self .assertIsNone (found_tool )
173183
174- @requires_django_user_context
175184 def test_find_tool_by_full_name_should_succeed2 (self ):
176185
186+ ValidationModelsTestCase .set_user_context ()
177187 tool1 = AuthoringTool .objects .create (name = 'Test Application' , version = '0.10' )
178188
179189 name_to_find = 'Test Application 0.10'
@@ -192,9 +202,9 @@ def test_find_tool_by_full_name_should_succeed2(self):
192202 self .assertIsInstance (found_tool , AuthoringTool )
193203 self .assertEqual (found_tool .name , tool2 .name )
194204
195- @requires_django_user_context
196205 def test_find_tool_by_full_name_should_succeed3 (self ):
197206
207+ ValidationModelsTestCase .set_user_context ()
198208 tool1 = AuthoringTool .objects .create (name = 'IfcOpenShell-v0.7.0-6c9e130ca' , version = 'v0.7.0-6c9e130ca' )
199209
200210 name_to_find = 'IfcOpenShell-v0.7.0-6c9e130ca v0.7.0-6c9e130ca'
@@ -204,10 +214,15 @@ def test_find_tool_by_full_name_should_succeed3(self):
204214 self .assertIsInstance (found_tool , AuthoringTool )
205215 self .assertEqual (found_tool .name , tool1 .name )
206216
207- @requires_django_user_context
208217 def test_model_can_navigate_back_to_request (self ):
209218
210- request = ValidationRequest .objects .create (file_name = 'test.ifc' , file = 'test.ifc' , size = 1024 )
219+ # arrange
220+ ValidationModelsTestCase .set_user_context ()
221+ request = ValidationRequest .objects .create (
222+ file_name = 'test.ifc' ,
223+ file = 'test.ifc' ,
224+ size = 1024
225+ )
211226
212227 model , _ = Model .objects .get_or_create (
213228 file_name = request .file_name ,
@@ -218,17 +233,27 @@ def test_model_can_navigate_back_to_request(self):
218233 request .model = model
219234 request .save ()
220235
236+ # act
221237 request2 = ValidationRequest .objects .get (id = request .id )
238+
239+ # assert
222240 self .assertIsNotNone (request2 .model )
223241 self .assertEqual (request .id , model .request .id )
224242 self .assertEqual (request2 .id , model .request .id )
225243
226- @requires_django_user_context
227244 def test_task_can_navigate_back_to_model (self ):
228245
229246 # arrange
230- request = ValidationRequest .objects .create (file_name = 'test.ifc' , file = 'test.ifc' , size = 1024 )
231- task = ValidationTask .objects .create (request = request , type = ValidationTask .Type .PARSE_INFO )
247+ ValidationModelsTestCase .set_user_context ()
248+ request = ValidationRequest .objects .create (
249+ file_name = 'test.ifc' ,
250+ file = 'test.ifc' ,
251+ size = 1024
252+ )
253+ task = ValidationTask .objects .create (
254+ request = request ,
255+ type = ValidationTask .Type .PARSE_INFO
256+ )
232257 model , _ = Model .objects .get_or_create (
233258 file_name = request .file_name ,
234259 file = request .file ,
0 commit comments