@@ -30,7 +30,7 @@ public function test_within_method_triggers_assertion()
30
30
});
31
31
}
32
32
33
- public function test_resolver_prefix ()
33
+ public function test_within_method_resolver_prefix ()
34
34
{
35
35
$ driver = m::mock (stdClass::class);
36
36
$ browser = new Browser ($ driver );
@@ -48,7 +48,7 @@ public function test_resolver_prefix()
48
48
});
49
49
}
50
50
51
- public function test_component_macros ()
51
+ public function test_within_method_component_macros ()
52
52
{
53
53
$ driver = m::mock (stdClass::class);
54
54
$ browser = new Browser ($ driver );
@@ -64,7 +64,7 @@ public function test_component_macros()
64
64
});
65
65
}
66
66
67
- public function test_component_elements ()
67
+ public function test_within_method_component_elements ()
68
68
{
69
69
$ driver = m::mock (stdClass::class);
70
70
$ browser = new Browser ($ driver );
@@ -85,7 +85,7 @@ public function test_component_elements()
85
85
});
86
86
}
87
87
88
- public function test_root_selector_can_be_dusk_hook ()
88
+ public function test_within_method_root_selector_can_be_dusk_hook ()
89
89
{
90
90
$ driver = m::mock (stdClass::class);
91
91
$ browser = new Browser ($ driver );
@@ -98,7 +98,7 @@ public function test_root_selector_can_be_dusk_hook()
98
98
});
99
99
}
100
100
101
- public function test_root_selector_can_be_element_alias ()
101
+ public function test_within_method_root_selector_can_be_element_alias ()
102
102
{
103
103
$ driver = m::mock (stdClass::class);
104
104
$ browser = new Browser ($ driver );
@@ -111,7 +111,7 @@ public function test_root_selector_can_be_element_alias()
111
111
});
112
112
}
113
113
114
- public function test_component_overrides_page_macros ()
114
+ public function test_within_method_component_overrides_page_macros ()
115
115
{
116
116
$ driver = m::mock (stdClass::class);
117
117
$ browser = new Browser ($ driver );
@@ -129,6 +129,131 @@ public function test_component_overrides_page_macros()
129
129
$ this ->assertTrue ($ browser ->page ->macroed );
130
130
});
131
131
}
132
+
133
+ public function test_within_method_chains ()
134
+ {
135
+ $ driver = m::mock (stdClass::class);
136
+ $ browser = new Browser ($ driver );
137
+
138
+ $ browser ->within (new TestComponent , function ($ browser ) {
139
+ $ this ->assertInstanceOf (TestComponent::class, $ browser ->component );
140
+ $ this ->assertTrue ($ browser ->component ->asserted );
141
+ $ this ->assertSame ('body #component-root ' , $ browser ->resolver ->prefix );
142
+ $ this ->assertFalse ($ browser ->component ->macroed );
143
+
144
+ $ browser ->doSomething ();
145
+ $ this ->assertTrue ($ browser ->component ->macroed );
146
+ })->within (new TestNestedComponent , function ($ browser ) {
147
+ $ this ->assertInstanceOf (TestNestedComponent::class, $ browser ->component );
148
+ $ this ->assertTrue ($ browser ->component ->asserted );
149
+ $ this ->assertSame ('body #nested-root ' , $ browser ->resolver ->prefix );
150
+ $ this ->assertFalse ($ browser ->component ->macroed );
151
+
152
+ $ browser ->doSomething ();
153
+ $ this ->assertTrue ($ browser ->component ->macroed );
154
+ });
155
+ }
156
+
157
+ public function test_component_method_triggers_assertion ()
158
+ {
159
+ $ driver = m::mock (stdClass::class);
160
+ $ browser = new Browser ($ driver );
161
+
162
+ $ scoped = $ browser ->component (new TestComponent );
163
+ $ this ->assertTrue ($ scoped ->component ->asserted );
164
+
165
+ $ nested = $ scoped ->component (new TestNestedComponent );
166
+ $ this ->assertTrue ($ nested ->component ->asserted );
167
+ }
168
+
169
+ public function test_component_method_resolver_prefix ()
170
+ {
171
+ $ driver = m::mock (stdClass::class);
172
+ $ browser = new Browser ($ driver );
173
+
174
+ $ scoped = $ browser ->component (new TestComponent );
175
+ $ this ->assertSame ('body #component-root ' , $ scoped ->resolver ->prefix );
176
+
177
+ $ nested = $ scoped ->component (new TestNestedComponent );
178
+ $ this ->assertSame ('body #component-root #nested-root ' , $ nested ->resolver ->prefix );
179
+
180
+ $ nested ->with ('prefix ' , function (Browser $ browser ) {
181
+ $ this ->assertSame ('body #component-root #nested-root prefix ' , $ browser ->resolver ->prefix );
182
+ });
183
+ }
184
+
185
+ public function test_component_method_component_macros ()
186
+ {
187
+ $ driver = m::mock (stdClass::class);
188
+ $ browser = new Browser ($ driver );
189
+
190
+ $ scoped = $ browser ->component (new TestComponent );
191
+ $ scoped ->doSomething ();
192
+ $ this ->assertTrue ($ scoped ->component ->macroed );
193
+
194
+ $ nested = $ scoped ->component (new TestNestedComponent );
195
+ $ nested ->doSomething ();
196
+ $ this ->assertTrue ($ nested ->component ->macroed );
197
+ }
198
+
199
+ public function test_component_method_component_elements ()
200
+ {
201
+ $ driver = m::mock (stdClass::class);
202
+ $ browser = new Browser ($ driver );
203
+
204
+ $ scoped = $ browser ->component (new TestComponent );
205
+ $ this ->assertEquals ([
206
+ '@component-alias ' => '#component-alias ' ,
207
+ '@overridden-alias ' => '#not-overridden ' ,
208
+ ], $ scoped ->resolver ->elements );
209
+
210
+ $ nested = $ scoped ->component (new TestNestedComponent );
211
+ $ this ->assertEquals ([
212
+ '@nested-alias ' => '#nested-alias ' ,
213
+ '@overridden-alias ' => '#overridden ' ,
214
+ '@component-alias ' => '#component-alias ' ,
215
+ ], $ nested ->resolver ->elements );
216
+ }
217
+
218
+ public function test_component_method_root_selector_can_be_dusk_hook ()
219
+ {
220
+ $ driver = m::mock (stdClass::class);
221
+ $ browser = new Browser ($ driver );
222
+
223
+ $ component = new TestComponent ;
224
+ $ component ->selector = '@dusk-hook-root ' ;
225
+
226
+ $ scoped = $ browser ->component ($ component );
227
+ $ this ->assertSame ('body [dusk="dusk-hook-root"] ' , $ scoped ->resolver ->prefix );
228
+ }
229
+
230
+ public function test_component_method_root_selector_can_be_element_alias ()
231
+ {
232
+ $ driver = m::mock (stdClass::class);
233
+ $ browser = new Browser ($ driver );
234
+
235
+ $ component = new TestComponent ;
236
+ $ component ->selector = '@component-alias ' ;
237
+
238
+ $ scoped = $ browser ->component ($ component );
239
+ $ this ->assertSame ('body #component-alias ' , $ scoped ->resolver ->prefix );
240
+ }
241
+
242
+ public function test_component_method_overrides_page_macros ()
243
+ {
244
+ $ driver = m::mock (stdClass::class);
245
+ $ browser = new Browser ($ driver );
246
+
247
+ $ browser ->on ($ page = new TestPage );
248
+
249
+ $ scoped = $ browser ->component (new TestComponent );
250
+ $ scoped ->doSomething ();
251
+ $ this ->assertFalse ($ scoped ->page ->macroed );
252
+ $ this ->assertTrue ($ scoped ->component ->macroed );
253
+
254
+ $ scoped ->doPageSpecificThing ();
255
+ $ this ->assertTrue ($ scoped ->page ->macroed );
256
+ }
132
257
}
133
258
134
259
class TestPage extends Page
0 commit comments