forked from laravel/dusk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBrowserTest.php
120 lines (95 loc) · 3.34 KB
/
BrowserTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
use Laravel\Dusk\Page;
use Laravel\Dusk\Browser;
class BrowserTest extends PHPUnit_Framework_TestCase
{
public function test_visit()
{
$driver = Mockery::mock(StdClass::class);
$driver->shouldReceive('navigate->to')->with('http://laravel.dev/login');
$browser = new Browser($driver);
Browser::$baseUrl = 'http://laravel.dev';
$browser->visit('/login');
}
public function test_visit_with_page_object()
{
$driver = Mockery::mock(StdClass::class);
$driver->shouldReceive('navigate->to')->with('http://laravel.dev/login');
$browser = new Browser($driver);
Browser::$baseUrl = 'http://laravel.dev';
$browser->visit($page = new BrowserTestPage);
$this->assertEquals(['@modal' => '#modal'], $browser->resolver->elements);
$this->assertEquals($page, $browser->page);
$this->assertTrue($page->asserted);
}
public function test_on_method_sets_current_page()
{
$driver = Mockery::mock(StdClass::class);
$browser = new Browser($driver);
Browser::$baseUrl = 'http://laravel.dev';
$browser->on($page = new BrowserTestPage);
$this->assertEquals(['@modal' => '#modal'], $browser->resolver->elements);
$this->assertEquals($page, $browser->page);
$this->assertTrue($page->asserted);
}
public function test_refresh_method()
{
$driver = Mockery::mock(StdClass::class);
$driver->shouldReceive('navigate->refresh')->once();
$browser = new Browser($driver);
$browser->refresh();
}
public function test_with_method()
{
$driver = Mockery::mock(StdClass::class);
$browser = new Browser($driver);
$browser->with('prefix', function ($browser) {
$this->assertInstanceof(Browser::class, $browser);
$this->assertEquals('body prefix', $browser->resolver->prefix);
});
}
public function test_with_method_with_page()
{
$driver = Mockery::mock(StdClass::class);
$driver->shouldReceive('navigate->to')->with('http://laravel.dev/login');
$browser = new Browser($driver);
Browser::$baseUrl = 'http://laravel.dev';
$browser->visit($page = new BrowserTestPage);
$browser->with('prefix', function ($browser) use ($page) {
$this->assertInstanceof(Browser::class, $browser);
$this->assertEquals('body prefix', $browser->resolver->prefix);
$this->assertEquals($page, $browser->page);
});
}
public function test_page_macros()
{
$driver = Mockery::mock(StdClass::class);
$driver->shouldReceive('navigate->to')->with('http://laravel.dev/login');
$browser = new Browser($driver);
Browser::$baseUrl = 'http://laravel.dev';
$browser->visit($page = new BrowserTestPage);
$browser->doSomething();
$this->assertTrue($browser->page->macroed);
}
}
class BrowserTestPage extends Page
{
public $asserted = false;
public $macroed = false;
public function assert(Browser $browser)
{
$this->asserted = true;
}
public function url()
{
return '/login';
}
public function doSomething()
{
$this->macroed = true;
}
public static function siteElements()
{
return ['@modal' => '#modal'];
}
}