5
5
6
6
from apps .ifc_validation_models .models import ValidationRequest , ValidationTask # TODO: for now needs to be absolute!
7
7
from 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
10
9
11
10
class ValidationModelsTestCase (TestCase ):
12
11
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 ():
21
13
user = User .objects .create (id = 1 , username = 'SYSTEM' , is_active = True )
22
- user . save ( )
14
+ set_user_context ( user )
23
15
24
- @requires_django_user_context
25
16
def test_created_request_has_status_pending (self ):
26
17
18
+ # arrange
19
+ ValidationModelsTestCase .set_user_context ()
27
20
request = ValidationRequest .objects .create (
28
21
file_name = 'test.ifc' ,
29
22
file = 'test.ifc' ,
30
23
size = 1024
31
24
)
32
25
26
+ # act
33
27
request2 = ValidationRequest .objects .get (id = request .id )
34
28
29
+ # assert
35
30
self .assertEqual (request2 .status , ValidationRequest .Status .PENDING )
36
31
37
- @requires_django_user_context
38
32
def test_created_request_has_created_fields (self ):
39
33
34
+ # arrange
35
+ ValidationModelsTestCase .set_user_context ()
40
36
request = ValidationRequest .objects .create (
41
37
file_name = 'test2.ifc' ,
42
38
file = 'test2.ifc' ,
43
39
size = 1024
44
40
)
45
41
42
+ # act
46
43
request2 = ValidationRequest .objects .get (id = request .id )
47
44
45
+ # assert
48
46
self .assertEqual (request2 .created .date (), datetime .date .today ())
49
47
self .assertEqual (request2 .created_by .username , 'SYSTEM' )
50
48
self .assertEqual (request2 .created_by .id , 1 )
51
49
self .assertTrue (request2 .updated is None )
52
50
self .assertTrue (request2 .updated_by is None )
53
51
54
- @requires_django_user_context
55
52
def test_updated_request_has_updated_fields (self ):
56
53
54
+ # arrange
55
+ ValidationModelsTestCase .set_user_context ()
57
56
request = ValidationRequest .objects .create (
58
57
file_name = 'test3.ifc' ,
59
58
file = 'test3.ifc' ,
60
59
size = 1024
61
60
)
62
61
62
+ # act
63
63
request2 = ValidationRequest .objects .get (id = request .id )
64
64
request2 .save () # simulate update
65
65
66
+ # assert
66
67
self .assertEqual (request2 .created .date (), datetime .date .today ())
67
68
self .assertEqual (request2 .created_by .username , 'SYSTEM' )
68
69
self .assertEqual (request2 .created_by .id , 1 )
69
70
self .assertEqual (request2 .updated .date (), datetime .date .today ())
70
71
self .assertEqual (request2 .updated_by .username , 'SYSTEM' )
71
72
self .assertEqual (request2 .updated_by .id , 1 )
72
73
73
- @requires_django_user_context
74
74
def test_created_task_has_status_pending (self ):
75
75
76
+ # arrange
77
+ ValidationModelsTestCase .set_user_context ()
76
78
request = ValidationRequest .objects .create (
77
79
file_name = 'test4.ifc' ,
78
80
file = 'test4.ifc' ,
79
81
size = 1024
80
82
)
81
83
84
+ # act
82
85
task = ValidationTask .objects .create (
83
86
request = request
84
87
)
85
88
86
89
task2 = ValidationTask .objects .get (id = task .id )
87
90
91
+ # assert
88
92
self .assertEqual (task2 .status , ValidationTask .Status .PENDING )
89
93
90
- @requires_django_user_context
91
94
def test_created_tasks_can_be_navigated (self ):
92
95
96
+ # arrange
97
+ ValidationModelsTestCase .set_user_context ()
93
98
request = ValidationRequest .objects .create (file_name = 'test5.ifc' , file = 'test5.ifc' , size = 1024 )
94
99
task1 = ValidationTask .objects .create (request = request )
95
100
task2 = ValidationTask .objects .create (request = request )
@@ -99,26 +104,31 @@ def test_created_tasks_can_be_navigated(self):
99
104
ValidationTask .objects .create (request = request2 )
100
105
ValidationTask .objects .create (request = request2 )
101
106
107
+ # act
102
108
all_tasks = ValidationTask .objects .all ()
103
109
tasks = ValidationTask .objects .filter (request__id = request .id )
104
110
111
+ # assert
105
112
self .assertEqual (all_tasks .count (), 5 )
106
113
self .assertEqual (tasks .count (), 3 )
107
114
self .assertEqual (task1 .id , tasks [0 ].id )
108
115
self .assertEqual (task2 .id , tasks [1 ].id )
109
116
self .assertEqual (task3 .id , tasks [2 ].id )
110
117
111
- @requires_django_user_context
112
118
def test_newly_created_tool_and_model_can_be_navigated (self ):
113
119
120
+ # arrange
121
+ ValidationModelsTestCase .set_user_context ()
114
122
user = User .objects .get (id = 1 )
115
123
company = Company .objects .create (name = 'Acme Inc.' )
116
124
tool = AuthoringTool .objects .create (name = 'Tool XYZ' , version = '1.0-alpha' , company = company )
117
125
model = Model .objects .create (file_name = 'test_123.ifc' , size = 2048 , produced_by = tool , uploaded_by = user )
118
126
model2 = Model .objects .create (file_name = 'test_xyz.ifc' , size = 4096 , produced_by = tool , uploaded_by = user )
119
127
128
+ # act
120
129
all_tools = AuthoringTool .objects .all ()
121
130
131
+ # assert
122
132
self .assertEqual (all_tools .count (), 1 )
123
133
self .assertEqual (all_tools [0 ].id , tool .id )
124
134
self .assertEqual (tool .company .name , company .name )
@@ -128,9 +138,9 @@ def test_newly_created_tool_and_model_can_be_navigated(self):
128
138
self .assertEqual (user .models .count (), 2 )
129
139
self .assertEqual (user .models .all ()[1 ].file_name , model2 .file_name )
130
140
131
- @requires_django_user_context
132
141
def test_find_tool_by_full_name_should_succeed (self ):
133
142
143
+ ValidationModelsTestCase .set_user_context ()
134
144
company1 = Company .objects .create (name = 'Acme Inc.' )
135
145
tool1 = AuthoringTool .objects .create (name = 'Tool ABC' , version = '1.0' , company = company1 )
136
146
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):
139
149
tool3 = AuthoringTool .objects .create (name = 'App' , version = None , company = company2 )
140
150
tool4 = AuthoringTool .objects .create (name = 'App' , version = '2024' , company = company2 )
141
151
142
- name_to_find = 'Acme Inc. Tool ABC - 1.0'
152
+ name_to_find = 'Acme Inc. - Tool ABC - 1.0'
143
153
found_tool = AuthoringTool .find_by_full_name (name_to_find )
144
154
self .assertIsNotNone (found_tool )
145
155
self .assertIsInstance (found_tool , AuthoringTool )
146
156
self .assertEqual (found_tool .name , tool1 .name )
147
157
148
- name_to_find = 'Acme Inc. Tool ABC 1.0'
158
+ name_to_find = 'Acme Inc. - Tool ABC 1.0'
149
159
found_tool = AuthoringTool .find_by_full_name (name_to_find )
150
160
self .assertIsNotNone (found_tool )
151
161
self .assertIsInstance (found_tool , AuthoringTool )
@@ -161,7 +171,7 @@ def test_find_tool_by_full_name_should_succeed(self):
161
171
self .assertIsInstance (found_tool , AuthoringTool )
162
172
self .assertEqual (found_tool .name , tool3 .name )
163
173
164
- name_to_find = 'PyCAD Limited App 2024'
174
+ name_to_find = 'PyCAD Limited - App 2024'
165
175
found_tool = AuthoringTool .find_by_full_name (name_to_find )
166
176
self .assertIsNotNone (found_tool )
167
177
self .assertIsInstance (found_tool , AuthoringTool )
@@ -171,9 +181,9 @@ def test_find_tool_by_full_name_should_succeed(self):
171
181
found_tool = AuthoringTool .find_by_full_name (name_to_find )
172
182
self .assertIsNone (found_tool )
173
183
174
- @requires_django_user_context
175
184
def test_find_tool_by_full_name_should_succeed2 (self ):
176
185
186
+ ValidationModelsTestCase .set_user_context ()
177
187
tool1 = AuthoringTool .objects .create (name = 'Test Application' , version = '0.10' )
178
188
179
189
name_to_find = 'Test Application 0.10'
@@ -192,9 +202,9 @@ def test_find_tool_by_full_name_should_succeed2(self):
192
202
self .assertIsInstance (found_tool , AuthoringTool )
193
203
self .assertEqual (found_tool .name , tool2 .name )
194
204
195
- @requires_django_user_context
196
205
def test_find_tool_by_full_name_should_succeed3 (self ):
197
206
207
+ ValidationModelsTestCase .set_user_context ()
198
208
tool1 = AuthoringTool .objects .create (name = 'IfcOpenShell-v0.7.0-6c9e130ca' , version = 'v0.7.0-6c9e130ca' )
199
209
200
210
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):
204
214
self .assertIsInstance (found_tool , AuthoringTool )
205
215
self .assertEqual (found_tool .name , tool1 .name )
206
216
207
- @requires_django_user_context
208
217
def test_model_can_navigate_back_to_request (self ):
209
218
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
+ )
211
226
212
227
model , _ = Model .objects .get_or_create (
213
228
file_name = request .file_name ,
@@ -218,17 +233,27 @@ def test_model_can_navigate_back_to_request(self):
218
233
request .model = model
219
234
request .save ()
220
235
236
+ # act
221
237
request2 = ValidationRequest .objects .get (id = request .id )
238
+
239
+ # assert
222
240
self .assertIsNotNone (request2 .model )
223
241
self .assertEqual (request .id , model .request .id )
224
242
self .assertEqual (request2 .id , model .request .id )
225
243
226
- @requires_django_user_context
227
244
def test_task_can_navigate_back_to_model (self ):
228
245
229
246
# 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
+ )
232
257
model , _ = Model .objects .get_or_create (
233
258
file_name = request .file_name ,
234
259
file = request .file ,
0 commit comments