MenuTest.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. //
  53. //public function testEditMenu()
  54. //{
  55. // $this->visit('admin/auth/menu/1/edit')
  56. // ->see('Menu')
  57. // ->submitForm('Submit', ['title' => 'blablabla'])
  58. // ->seePageIs('admin/auth/menu')
  59. // ->seeInDatabase(config('admin.database.menu_table'), ['title' => 'blablabla'])
  60. // ->assertEquals(7, Menu::count());
  61. //}
  62. //
  63. //public function testEditMenuParent()
  64. //{
  65. // $this->expectException(\Laravel\BrowserKitTesting\HttpException::class);
  66. //
  67. // $this->visit('admin/auth/menu/5/edit')
  68. // ->see('Menu')
  69. // ->submitForm('Submit', ['parent_id' => 5]);
  70. //}
  71. }