I can collect return values

This commit is contained in:
2025-11-01 19:40:02 +01:00
parent b4df7ac063
commit 3d133a40c0
4 changed files with 60 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
import pytest
from myutils.observable import NotObservableError, make_observable, bind
from myutils.observable import NotObservableError, make_observable, bind, collect_return_values
# Test fixtures
@@ -170,4 +170,38 @@ def test_i_can_preserve_original_class_behavior():
assert demo.get_double() == 10
# Test that isinstance still works
assert isinstance(demo, Demo)
assert isinstance(demo, Demo)
def test_i_can_collect_the_updates():
demo = Demo()
make_observable(demo)
bind(demo, 'number', lambda old, new: new)
bind(demo, 'number', lambda old, new: new * 2)
demo.number = 5
assert collect_return_values(demo) == [5, 10]
# another time to make sure there is no side effect
demo.number = 10
assert collect_return_values(demo) == [10, 20]
def test_i_cannot_collect_updates_before_making_observable():
demo = Demo()
with pytest.raises(NotObservableError) as exc_info:
collect_return_values(demo)
assert "must be made observable" in str(exc_info.value).lower()
def test_i_can_collect_none():
demo = Demo()
make_observable(demo)
bind(demo, 'number', lambda old, new: None)
demo.number = 5
assert collect_return_values(demo) == [None]