7
7
8
8
from simvue .api .objects import Events , Folder , Run
9
9
from simvue .models import DATETIME_FORMAT
10
+ from simvue .sender import sender
10
11
11
12
@pytest .mark .api
12
13
@pytest .mark .online
@@ -30,3 +31,39 @@ def test_events_creation_online() -> None:
30
31
_run .delete ()
31
32
_folder .delete (recursive = True , delete_runs = True , runs_only = False )
32
33
34
+ @pytest .mark .api
35
+ @pytest .mark .offline
36
+ def test_events_creation_offline () -> None :
37
+ _uuid : str = f"{ uuid .uuid4 ()} " .split ("-" )[0 ]
38
+ _folder_name = f"/simvue_unit_testing/{ _uuid } "
39
+ _folder = Folder .new (path = _folder_name , offline = True )
40
+ _run = Run .new (folder = _folder_name , offline = True )
41
+ _folder .commit ()
42
+ _run .commit ()
43
+ _timestamp = datetime .datetime .now ().strftime (DATETIME_FORMAT )
44
+ _events = Events .new (
45
+ run = _run .id ,
46
+ events = [
47
+ {"message" : "This is a test!" , "timestamp" : _timestamp }
48
+ ],
49
+ offline = True
50
+ )
51
+ _events .commit ()
52
+ with _events ._local_staging_file .open () as in_f :
53
+ _local_data = json .load (in_f )
54
+
55
+ assert _local_data .get ("run" ) == _run .id
56
+ assert _local_data .get ("events" )[0 ].get ("message" ) == "This is a test!"
57
+ assert _local_data .get ("events" )[0 ].get ("timestamp" ) == _timestamp
58
+
59
+ _id_mapping = sender (_events ._local_staging_file .parents [1 ], 1 , 10 , ["folders" , "runs" , "events" ])
60
+ time .sleep (1 )
61
+
62
+ # Get online version of events
63
+ _online_events = Events (_id_mapping .get (_events .id ))
64
+ _event_content = next (_online_events .get (run_id = _id_mapping .get (_run .id )))
65
+ assert _event_content .message == "This is a test!"
66
+ assert _event_content .timestamp == _timestamp
67
+
68
+ _run .delete ()
69
+ _folder .delete (recursive = True , delete_runs = True , runs_only = False )
0 commit comments