MenuPage.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Tests\Browser\Pages;
  3. use Laravel\Dusk\Browser;
  4. use Tests\Browser\Components\Form\MenuCreationForm;
  5. class MenuPage extends Page
  6. {
  7. /**
  8. * Get the URL for the page.
  9. *
  10. * @return string
  11. */
  12. public function url()
  13. {
  14. return admin_base_path('auth/menu');
  15. }
  16. /**
  17. * Assert that the browser is on the page.
  18. *
  19. * @param \Laravel\Dusk\Browser $browser
  20. * @return void
  21. */
  22. public function assert(Browser $browser)
  23. {
  24. $browser->assertSeeText(__('admin.expand'))
  25. ->assertSeeText(__('admin.collapse'))
  26. ->assertSeeText(__('admin.save'))
  27. ->assertSeeText(__('admin.new'))
  28. ->whenAvailable('@tree', function (Browser $browser) {
  29. $browser->assertSeeText('Menu')
  30. ->assertSeeText('Index')
  31. ->assertSeeText('Admin')
  32. ->assertSeeText('Users')
  33. ->assertSeeText('Roles')
  34. ->assertSeeText('Permission')
  35. ->assertSeeText('Menu');
  36. }, 1)
  37. ->within('@form', function (Browser $browser) {
  38. $browser->assertSeeText(__('admin.parent_id'))
  39. ->assertSeeText(__('admin.title'))
  40. ->assertSeeText(__('admin.icon'))
  41. ->assertSeeText(__('admin.uri'))
  42. ->assertSeeText(__('admin.roles'))
  43. ->assertSeeText(__('admin.permission'))
  44. ->assertSeeText(__('admin.selectall'))
  45. ->assertSeeText(__('admin.expand'))
  46. ->assertSelected('parent_id', 0)
  47. ->hasInput('title')
  48. ->hasInput('icon')
  49. ->hasInput('uri')
  50. ->assertButtonEnabled(__('admin.submit'))
  51. ->assertButtonEnabled(__('admin.reset'));
  52. });
  53. }
  54. /**
  55. * 创建.
  56. *
  57. * @param Browser $browser
  58. * @param array $input
  59. *
  60. * @return Browser
  61. */
  62. public function newMenu(Browser $browser, array $input)
  63. {
  64. return $browser->within(new MenuCreationForm(), function (Browser $browser) use ($input) {
  65. $browser->fill($input);
  66. $browser->pressAndWaitFor(__('admin.submit'), 2);
  67. $browser->waitForLocation($this->url(), 2);
  68. });
  69. }
  70. /**
  71. * Get the element shortcuts for the page.
  72. *
  73. * @return array
  74. */
  75. public function elements()
  76. {
  77. return [
  78. '@tree' => '.dd',
  79. '@form' => 'form[method="POST"]',
  80. ];
  81. }
  82. }