@@ -25,15 +25,15 @@ def test_constructor(self):
2525 'experiments' : 'None' ,
2626 'modified' : datetime .datetime .now ().strftime ('%d.%m.%Y %H:%M' ),
2727 }
28- assert project ._path == Path (os .path .expanduser ('~' ))
28+ assert project ._path_project_parent == Path (os .path .expanduser ('~' ))
2929 assert len (project ._materials ) == 0
3030 assert len (project ._models ) == 0
3131 assert project ._calculator is None
3232 assert project ._minimizer is None
3333 assert project ._experiments is None
3434 assert project ._report is None
35- assert project ._project_created is False
36- assert project ._project_with_experiments is False
35+ assert project ._created is False
36+ assert project ._with_experiments is False
3737
3838 def test_reset (self ):
3939 # When
@@ -45,9 +45,9 @@ def test_reset(self):
4545 project ._minimizer = 'minimizer'
4646 project ._experiments = 'experiments'
4747 project ._report = 'report'
48- project ._project_created = True
49- project ._project_with_experiments = True
50- project ._path = 'project_path'
48+ project ._created = True
49+ project ._with_experiments = True
50+ project ._path_project_parent = 'project_path'
5151
5252 # Then
5353 project .reset ()
@@ -65,13 +65,13 @@ def test_reset(self):
6565 assert project ._materials .unique_name == 'project_materials'
6666 assert len (project ._materials ) == 0
6767
68- assert project ._path == Path (os .path .expanduser ('~' ))
68+ assert project ._path_project_parent == Path (os .path .expanduser ('~' ))
6969 assert project ._calculator is None
7070 assert project ._minimizer is None
7171 assert project ._experiments is None
7272 assert project ._report is None
73- assert project ._project_created is False
74- assert project ._project_with_experiments is False
73+ assert project ._created is False
74+ assert project ._with_experiments is False
7575 assert global_object .map .vertices () == ['project_models' , 'project_materials' ]
7676
7777 def test_models (self ):
@@ -132,10 +132,10 @@ def test_experiments(self):
132132 def test_path_json (self , tmp_path ):
133133 # When
134134 project = Project ()
135- project .path = tmp_path
135+ project .set_path_project_parent ( tmp_path )
136136
137137 # Then Expect
138- assert project .path_json == Path (tmp_path ) / 'project.json'
138+ assert project .path_json == Path (tmp_path ) / 'Example Project' / ' project.json'
139139
140140 def test_add_material (self ):
141141 # When
@@ -203,8 +203,7 @@ def test_as_dict(self):
203203 assert keys == [
204204 'info' ,
205205 'models' ,
206- 'project_created' ,
207- 'project_with_experiments' ,
206+ 'with_experiments' ,
208207 ]
209208 assert project_dict ['info' ] == {
210209 'name' : 'Example Project' ,
@@ -214,8 +213,7 @@ def test_as_dict(self):
214213 'modified' : datetime .datetime .now ().strftime ('%d.%m.%Y %H:%M' ),
215214 }
216215 assert project_dict ['models' ]['data' ] == []
217- assert project_dict ['project_created' ] is False
218- assert project_dict ['project_with_experiments' ] is False
216+ assert project_dict ['with_experiments' ] is False
219217
220218 def test_as_dict_models (self ):
221219 # When
@@ -315,41 +313,104 @@ def test_dict_round_trip(self):
315313 assert project_dict [key ] == new_project_dict [key ]
316314 assert project_materials_dict == new_project_materials_dict
317315
318- def test_save_project (self , tmp_path ):
316+ def test_save_as_json (self , tmp_path ):
319317 # When
320318 global_object .map ._clear ()
321319 project = Project ()
322- project .path = tmp_path
320+ project .set_path_project_parent ( tmp_path )
323321 project ._models .append (Model ())
324322 project ._info ['name' ] = 'Test Project'
325- project .save_project_json (overwrite = True )
326323
327324 # Then
328- project_path = project .path_json
325+ project .save_as_json ()
326+ project .path_json
329327
330328 # Expect
331- assert project_path .exists ()
329+ assert project . path_json .exists ()
332330
333- def test_load_project (self , tmp_path ):
331+ def test_save_as_json_overwrite (self , tmp_path ):
334332 # When
335333 global_object .map ._clear ()
336334 project = Project ()
337- project .path = tmp_path
335+ project .set_path_project_parent (tmp_path )
336+ project .save_as_json ()
337+ file_info = project .path_json .stat ()
338+
339+ # Then
340+ project ._info ['short_description' ] = 'short_description'
338341 project ._models .append (Model ())
339- project ._info ['name' ] = 'Test Project'
340- project .save_project_json ()
342+ project .save_as_json (overwrite = True )
343+
344+ # Expect
345+ assert str (file_info ) != str (project .path_json .stat ())
346+
347+ def test_save_as_json_dont_overwrite (self , tmp_path ):
348+ # When
349+ global_object .map ._clear ()
350+ project = Project ()
351+ project .set_path_project_parent (tmp_path )
352+ project .save_as_json ()
353+ file_info = project .path_json .stat ()
354+
355+ # Then
356+ project ._info ['short_description' ] = 'short_description'
357+ project ._models .append (Model ())
358+ project .save_as_json ()
359+
360+ # Expect
361+ assert str (file_info ) == str (project .path_json .stat ())
362+
363+ def test_load_from_json (self , tmp_path ):
364+ # When
365+ global_object .map ._clear ()
366+ project = Project ()
367+ project .set_path_project_parent (tmp_path )
368+ project ._models .append (Model ())
369+ project ._info ['name' ] = 'name'
370+ project ._info ['short_description' ] = 'short_description'
371+ project ._info ['samples' ] = 'samples'
372+ project ._info ['experiments' ] = 'experiments'
373+
374+ project .save_as_json ()
341375 project_dict = project .as_dict ()
342376
343377 global_object .map ._clear ()
344378 new_project = Project ()
345379
346380 # Then
347- new_project .load_project_json (tmp_path / 'project.json' )
381+ new_project .load_from_json (tmp_path / 'name' / 'project.json' )
348382 # Do it twice to ensure that potential global objects don't collide
349- new_project .load_project_json (tmp_path / 'project.json' )
383+ new_project .load_from_json (tmp_path / 'name' / 'project.json' )
350384
351385 # Expect
352386 assert len (new_project ._models ) == 1
353- assert new_project ._info ['name' ] == 'Test Project'
354- assert new_project .as_dict () == project_dict
355- assert new_project .path == tmp_path
387+ assert new_project ._info ['name' ] == 'name'
388+ assert new_project ._info ['short_description' ] == 'short_description'
389+ assert new_project ._info ['samples' ] == 'samples'
390+ assert new_project ._info ['experiments' ] == 'experiments'
391+ assert project_dict == new_project .as_dict ()
392+ assert new_project ._path_project_parent == tmp_path
393+ assert new_project .created is True
394+
395+ def test_create (self , tmp_path ):
396+ # When
397+ project = Project ()
398+ project .set_path_project_parent (tmp_path )
399+ project ._info ['modified' ] = 'modified'
400+ project ._info ['name' ] = 'Test Project'
401+
402+ # Then
403+ project .create ()
404+
405+ # Expect
406+ assert project .path == tmp_path / 'Test Project'
407+ assert project .path .exists ()
408+ assert (project .path / 'experiments' ).exists ()
409+ assert project .created is True
410+ assert project ._info == {
411+ 'name' : 'Test Project' ,
412+ 'short_description' : 'reflectometry, 1D' ,
413+ 'samples' : 'None' ,
414+ 'experiments' : 'None' ,
415+ 'modified' : datetime .datetime .now ().strftime ('%d.%m.%Y %H:%M' ),
416+ }
0 commit comments