55
66import flet as ft
77from flet .controls .control_event import get_event_field_type
8- from flet .controls .page import Page , ViewPopResultEvent
8+ from flet .controls .page import Page , ViewsPopUntilEvent
99from flet .messaging .connection import Connection
1010from flet .messaging .session import Session
1111from flet .pubsub .pubsub_hub import PubSubHub
@@ -17,64 +17,64 @@ def _make_page() -> Page:
1717 return Page (sess = Session (conn ))
1818
1919
20- def test_view_pop_result_event_creation ():
20+ def test_views_pop_until_event_creation ():
2121 page = _make_page ()
22- evt = ViewPopResultEvent (
23- name = "view_pop_result " ,
22+ evt = ViewsPopUntilEvent (
23+ name = "views_pop_until " ,
2424 control = page ,
2525 route = "/" ,
2626 result = "test_result" ,
2727 )
2828 assert evt .route == "/"
2929 assert evt .result == "test_result"
3030 assert evt .view is None
31- assert evt .name == "view_pop_result "
31+ assert evt .name == "views_pop_until "
3232
3333
34- def test_view_pop_result_event_default_result ():
34+ def test_views_pop_until_event_default_result ():
3535 page = _make_page ()
36- evt = ViewPopResultEvent (
37- name = "view_pop_result " ,
36+ evt = ViewsPopUntilEvent (
37+ name = "views_pop_until " ,
3838 control = page ,
3939 route = "/home" ,
4040 )
4141 assert evt .result is None
4242
4343
44- def test_get_event_field_type_on_view_pop_result ():
44+ def test_get_event_field_type_on_views_pop_until ():
4545 page = _make_page ()
46- event_type = get_event_field_type (page , "on_view_pop_result " )
47- assert event_type == ViewPopResultEvent
46+ event_type = get_event_field_type (page , "on_views_pop_until " )
47+ assert event_type == ViewsPopUntilEvent
4848
4949
50- def test_view_pop_result_event_importable_from_flet ():
51- assert hasattr (ft , "ViewPopResultEvent " )
52- assert ft .ViewPopResultEvent is ViewPopResultEvent
50+ def test_views_pop_until_event_importable_from_flet ():
51+ assert hasattr (ft , "ViewsPopUntilEvent " )
52+ assert ft .ViewsPopUntilEvent is ViewsPopUntilEvent
5353
5454
55- def test_page_has_on_view_pop_result_attribute ():
55+ def test_page_has_on_views_pop_until_attribute ():
5656 page = _make_page ()
57- assert hasattr (page , "on_view_pop_result " )
58- assert page .on_view_pop_result is None
57+ assert hasattr (page , "on_views_pop_until " )
58+ assert page .on_views_pop_until is None
5959
6060
61- def test_page_has_pop_until_with_result_method ():
61+ def test_page_has_pop_views_until_method ():
6262 page = _make_page ()
63- assert hasattr (page , "pop_until_with_result " )
64- assert inspect .iscoroutinefunction (page .pop_until_with_result )
63+ assert hasattr (page , "pop_views_until " )
64+ assert inspect .iscoroutinefunction (page .pop_views_until )
6565
6666
6767@pytest .mark .asyncio
68- async def test_pop_until_with_result_raises_on_missing_route ():
68+ async def test_pop_views_until_raises_on_missing_route ():
6969 page = _make_page ()
7070 page .views = [ft .View (route = "/" )]
7171
7272 with pytest .raises (ValueError , match = "No view found with route '/nonexistent'" ):
73- await page .pop_until_with_result ("/nonexistent" )
73+ await page .pop_views_until ("/nonexistent" )
7474
7575
7676@pytest .mark .asyncio
77- async def test_pop_until_with_result_removes_views_above_target ():
77+ async def test_pop_views_until_removes_views_above_target ():
7878 page = _make_page ()
7979 page .views = [
8080 ft .View (route = "/" ),
@@ -87,14 +87,14 @@ async def test_pop_until_with_result_removes_views_above_target():
8787 patch .object (page , "_invoke_method" , new_callable = AsyncMock ),
8888 patch .object (page , "update" ),
8989 ):
90- await page .pop_until_with_result ("/" , result = "done" )
90+ await page .pop_views_until ("/" , result = "done" )
9191
9292 assert len (page .views ) == 1
9393 assert page .views [0 ].route == "/"
9494
9595
9696@pytest .mark .asyncio
97- async def test_pop_until_with_result_removes_to_middle_view ():
97+ async def test_pop_views_until_removes_to_middle_view ():
9898 page = _make_page ()
9999 page .views = [
100100 ft .View (route = "/" ),
@@ -106,15 +106,15 @@ async def test_pop_until_with_result_removes_to_middle_view():
106106 patch .object (page , "_invoke_method" , new_callable = AsyncMock ),
107107 patch .object (page , "update" ),
108108 ):
109- await page .pop_until_with_result ("/step1" , result = "partial" )
109+ await page .pop_views_until ("/step1" , result = "partial" )
110110
111111 assert len (page .views ) == 2
112112 assert page .views [0 ].route == "/"
113113 assert page .views [1 ].route == "/step1"
114114
115115
116116@pytest .mark .asyncio
117- async def test_pop_until_with_result_no_op_when_target_is_top ():
117+ async def test_pop_views_until_no_op_when_target_is_top ():
118118 page = _make_page ()
119119 page .views = [
120120 ft .View (route = "/" ),
@@ -125,51 +125,51 @@ async def test_pop_until_with_result_no_op_when_target_is_top():
125125 patch .object (page , "_invoke_method" , new_callable = AsyncMock ),
126126 patch .object (page , "update" ),
127127 ):
128- await page .pop_until_with_result ("/current" , result = "same" )
128+ await page .pop_views_until ("/current" , result = "same" )
129129
130130 assert len (page .views ) == 2
131131 assert page .views [- 1 ].route == "/current"
132132
133133
134134@pytest .mark .asyncio
135- async def test_pop_until_with_result_fires_only_view_pop_result ():
135+ async def test_pop_views_until_fires_only_views_pop_until ():
136136 page = _make_page ()
137137 page .views = [
138138 ft .View (route = "/" ),
139139 ft .View (route = "/step1" ),
140140 ft .View (route = "/step2" ),
141141 ]
142142
143- page .on_view_pop_result = lambda e : None
143+ page .on_views_pop_until = lambda e : None
144144
145145 with (
146146 patch .object (page , "_invoke_method" , new_callable = AsyncMock ),
147147 patch .object (page , "update" ),
148148 patch .object (page , "_trigger_event" , new_callable = AsyncMock ) as mock_trigger ,
149149 ):
150- await page .pop_until_with_result ("/" , result = "finished" )
150+ await page .pop_views_until ("/" , result = "finished" )
151151
152152 trigger_calls = [call .args [0 ] for call in mock_trigger .call_args_list ]
153- # on_view_pop should NOT be fired — pop_until_with_result handles removal
153+ # on_view_pop should NOT be fired — pop_views_until handles removal
154154 assert "view_pop" not in trigger_calls
155- # on_view_pop_result SHOULD be fired for the destination view
156- assert "view_pop_result " in trigger_calls
155+ # on_views_pop_until SHOULD be fired for the destination view
156+ assert "views_pop_until " in trigger_calls
157157
158158
159159@pytest .mark .asyncio
160- async def test_pop_until_with_result_no_event_when_no_handler ():
160+ async def test_pop_views_until_no_event_when_no_handler ():
161161 page = _make_page ()
162162 page .views = [
163163 ft .View (route = "/" ),
164164 ft .View (route = "/step1" ),
165165 ]
166166
167- # No on_view_pop_result handler set
167+ # No on_views_pop_until handler set
168168 with (
169169 patch .object (page , "_invoke_method" , new_callable = AsyncMock ),
170170 patch .object (page , "update" ),
171171 patch .object (page , "_trigger_event" , new_callable = AsyncMock ) as mock_trigger ,
172172 ):
173- await page .pop_until_with_result ("/" , result = "done" )
173+ await page .pop_views_until ("/" , result = "done" )
174174
175175 assert mock_trigger .call_count == 0
0 commit comments