MenuTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Tests\Browser;
  3. use Dcat\Admin\Models\Menu;
  4. use Laravel\Dusk\Browser;
  5. use Tests\Browser\Components\MultipleSelect2;
  6. use Tests\Browser\Pages\MenuPage;
  7. use Tests\TestCase;
  8. /**
  9. * @group menu
  10. */
  11. class MenuTest extends TestCase
  12. {
  13. public function testMenuIndex()
  14. {
  15. $this->browse(function (Browser $browser) {
  16. $browser->visit(new MenuPage());
  17. });
  18. }
  19. public function testAddMenu()
  20. {
  21. $this->browse(function (Browser $browser) {
  22. $item = [
  23. 'parent_id' => '0',
  24. 'title' => 'Test',
  25. 'uri' => 'test',
  26. 'icon' => 'fa-user',
  27. ];
  28. $roles = [1];
  29. $browser->visit(new MenuPage())
  30. ->select('parent_id', $item['parent_id'])
  31. ->type('title', $item['title'])
  32. ->type('uri', $item['uri'])
  33. ->type('icon', $item['icon'])
  34. ->click('.row')
  35. ->within(new MultipleSelect2('select[name="roles[]"]'), function (Browser $browser) use ($item, $roles) {
  36. $browser->choose($roles);
  37. })
  38. ->pressAndWaitFor('Submit')
  39. ->waitForText(__('admin.save_succeeded'), 2)
  40. ->assertPathIs(test_admin_path('auth/menu'));
  41. $newMenuId = Menu::query()->orderByDesc('id')->first()->id;
  42. $this->seeInDatabase(config('admin.database.menu_table'), $item)
  43. ->seeInDatabase(config('admin.database.role_menu_table'), ['role_id' => $roles, 'menu_id' => $newMenuId])
  44. ->assertEquals(8, Menu::count());
  45. });
  46. }
  47. public function testDeleteMenu()
  48. {
  49. $this->delete('admin/auth/menu/8');
  50. $this->assertEquals(7, Menu::count());
  51. }
  52. public function testEditMenu()
  53. {
  54. $this->browse(function (Browser $browser) {
  55. $browser->visit(test_admin_path('auth/menu/1/edit'))
  56. ->assertSee('Menu')
  57. ->assertSee('Edit')
  58. ->type('title', 'blablabla')
  59. ->press('Submit')
  60. ->waitForLocation(test_admin_path('auth/menu'), 2);
  61. $this->seeInDatabase(config('admin.database.menu_table'), ['title' => 'blablabla'])
  62. ->assertEquals(7, Menu::count());
  63. });
  64. }
  65. //
  66. //public function testEditMenuParent()
  67. //{
  68. // $this->expectException(\Laravel\BrowserKitTesting\HttpException::class);
  69. //
  70. // $this->visit('admin/auth/menu/5/edit')
  71. // ->see('Menu')
  72. // ->submitForm('Submit', ['parent_id' => 5]);
  73. //}
  74. }