Skip to content

Commit c53f331

Browse files
committed
add skeleton tests
these will be implemented later
1 parent f460de0 commit c53f331

3 files changed

Lines changed: 94 additions & 4 deletions

File tree

docs/source/getting-started.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Let's look at the example that you may have seen
88
99
import idom
1010
11+
1112
@idom.element
1213
async def Slideshow():
1314
index, set_index = idom.hooks.use_state(0)
@@ -23,6 +24,7 @@ Let's look at the example that you may have seen
2324
}
2425
)
2526
27+
2628
host, port = "localhost", 8765
2729
server = idom.server.sanic.PerClientStateServer(Slideshow)
2830
server.run(host, port)

tests/test_core/test_hooks.py

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,29 @@ async def SimpleStatefulElement():
5252
]
5353

5454

55+
async def test_set_state_callback_identity_is_preserved():
56+
saved_set_state_hooks = []
57+
58+
@idom.element
59+
async def SimpleStatefulElement():
60+
index, set_index = idom.hooks.use_state(0)
61+
saved_set_state_hooks.append(set_index)
62+
set_index(index + 1)
63+
return idom.html.div(index)
64+
65+
sse = SimpleStatefulElement()
66+
67+
async with idom.Layout(sse) as layout:
68+
await layout.render()
69+
await layout.render()
70+
await layout.render()
71+
await layout.render()
72+
73+
first_hook = saved_set_state_hooks[0]
74+
for h in saved_set_state_hooks[1:]:
75+
assert first_hook is h
76+
77+
5578
def test_use_state_with_constructor(driver, display, driver_wait):
5679
constructor_call_count = idom.Ref(0)
5780

@@ -113,7 +136,15 @@ async def on_click(event):
113136
assert count.get_attribute("innerHTML") == "1"
114137

115138

116-
def test_simple_input(driver, display):
139+
def test_set_state_with_reducer_instead_of_value():
140+
assert False
141+
142+
143+
def test_set_state_checks_identity_not_equality():
144+
assert False
145+
146+
147+
def test_simple_input_with_use_state(driver, display):
117148
message_ref = idom.Ref(None)
118149

119150
@idom.element
@@ -139,12 +170,49 @@ async def on_change(event):
139170
assert message_ref.current == "this is a test"
140171

141172

173+
def test_use_effect_callback_occurs_after_full_layout_update_is_complete():
174+
# TODO: right now it runs after the element is rendered, not the full layout update
175+
assert False
176+
177+
178+
def test_use_effect_cleanup_occurs_on_will_render():
179+
assert False
180+
181+
182+
def test_use_effect_cleanup_occurs_on_will_unmount():
183+
assert False
184+
185+
186+
def test_use_effect_memoization():
187+
assert False
188+
189+
190+
def test_use_reducer():
191+
assert False
192+
193+
194+
def test_use_reducer_dispatch_callback_identity_is_preserved():
195+
assert False
196+
197+
198+
def test_use_callback_identity():
199+
assert False
200+
201+
202+
def test_use_callback_memoization():
203+
assert False
204+
205+
142206
def test_use_memo(display, driver, driver_wait):
143207
trigger_count = 0
144208

209+
# use constants to ensure identity comparison works as expected
210+
left_const = "left"
211+
right_const = "right"
212+
145213
@idom.element
146214
async def ComponentWithMemo():
147-
location, set_location = idom.hooks.use_state("left")
215+
location, set_location = idom.hooks.use_state(left_const)
148216

149217
@idom.hooks.use_memo(args=location)
150218
def count():
@@ -153,10 +221,10 @@ def count():
153221
return trigger_count
154222

155223
async def on_left_button_click(event):
156-
set_location("left")
224+
set_location(left_const)
157225

158226
async def on_right_button_click(event):
159-
set_location("right")
227+
set_location(right_const)
160228

161229
return idom.html.div(
162230
idom.html.button(
@@ -181,3 +249,19 @@ async def on_right_button_click(event):
181249
right_client_button.click() # trigger: yes
182250

183251
driver_wait.until(lambda drv: trigger_count == 4)
252+
253+
254+
def test_use_memo_always_runs_if_args_are_none():
255+
assert False
256+
257+
258+
def test_use_memo_never_runs_if_args_args_empty_list():
259+
assert False
260+
261+
262+
def test_use_memo_decorator_and_non_decorator_usage():
263+
assert False
264+
265+
266+
def test_use_ref():
267+
assert False

tests/test_core/test_layout.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,3 +252,7 @@ async def Inner():
252252
del layout
253253
gc.collect()
254254
assert not live_elements
255+
256+
257+
def test_double_updated_element_is_not_double_rendered():
258+
assert False

0 commit comments

Comments
 (0)