1
1
import asyncio
2
2
from typing import Any , Sequence
3
3
4
+ from jsonpointer import set_pointer
5
+
4
6
import idom
5
- from idom .core .layout import Layout , LayoutEventMessage , LayoutUpdateMessage
6
- from idom .core .serve import LayoutUpdateMessage , serve_layout
7
+ from idom .core .layout import Layout
8
+ from idom .core .serve import serve_layout
9
+ from idom .core .types import LayoutUpdateMessage
7
10
from idom .testing import StaticEventHandler
11
+ from tests .tooling .common import event_message
8
12
9
13
10
14
EVENT_NAME = "onEvent"
11
15
STATIC_EVENT_HANDLER = StaticEventHandler ()
12
16
13
17
14
- def test_vdom_json_patch_create_from_apply_to ():
15
- update = LayoutUpdateMessage ("" , {"a" : 1 , "b" : [1 ]}, {"a" : 2 , "b" : [1 , 2 ]})
16
- patch = LayoutUpdateMessage .create_from (update )
17
- result = patch .apply_to ({"a" : 1 , "b" : [1 ]})
18
- assert result == {"a" : 2 , "b" : [1 , 2 ]}
19
-
20
-
21
18
def make_send_recv_callbacks (events_to_inject ):
22
19
changes = []
23
20
@@ -46,7 +43,7 @@ async def recv():
46
43
47
44
48
45
def make_events_and_expected_model ():
49
- events = [LayoutEventMessage (STATIC_EVENT_HANDLER .target , [] )] * 4
46
+ events = [event_message (STATIC_EVENT_HANDLER .target )] * 4
50
47
expected_model = {
51
48
"tagName" : "" ,
52
49
"children" : [
@@ -72,7 +69,12 @@ def assert_changes_produce_expected_model(
72
69
) -> None :
73
70
model_from_changes = {}
74
71
for update in changes :
75
- model_from_changes = update .apply_to (model_from_changes )
72
+ if update ["path" ]:
73
+ model_from_changes = set_pointer (
74
+ model_from_changes , update ["path" ], update ["model" ]
75
+ )
76
+ else :
77
+ model_from_changes .update (update ["model" ])
76
78
assert model_from_changes == expected_model
77
79
78
80
@@ -128,8 +130,8 @@ async def handle_event():
128
130
)
129
131
)
130
132
131
- await recv_queue .put (LayoutEventMessage (blocked_handler .target , [] ))
133
+ await recv_queue .put (event_message (blocked_handler .target ))
132
134
await will_block .wait ()
133
135
134
- await recv_queue .put (LayoutEventMessage (non_blocked_handler .target , [] ))
136
+ await recv_queue .put (event_message (non_blocked_handler .target ))
135
137
await second_event_did_execute .wait ()
0 commit comments