Delete.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Tests\Browser\Components\Grid\Actions;
  3. use Laravel\Dusk\Browser;
  4. use Tests\Browser\Components\Component;
  5. /**
  6. * 删除动作.
  7. */
  8. class Delete extends Component
  9. {
  10. /**
  11. * 获取组件的 root selector
  12. *
  13. * @return string
  14. */
  15. public function selector()
  16. {
  17. return '';
  18. }
  19. /**
  20. * 浏览器包含组件的断言
  21. *
  22. * @param Browser $browser
  23. * @return void
  24. */
  25. public function assert(Browser $browser)
  26. {
  27. }
  28. /**
  29. * 读取组件的元素快捷方式
  30. *
  31. * @return array
  32. */
  33. public function elements()
  34. {
  35. return [
  36. '@item' => 'a[data-action="delete"]:visible',
  37. '@confirm' => '.swal2-confirm',
  38. '@cancel' => '.swal2-cancel',
  39. ];
  40. }
  41. /**
  42. * 选中.
  43. *
  44. * @param Browser $browser
  45. * @param string|array $value
  46. *
  47. * @return Browser
  48. */
  49. public function delete(Browser $browser, $value)
  50. {
  51. $parent = $this->formatSelector($browser, '@item');
  52. if (is_numeric($value)) {
  53. $selector = "$('{$parent}').eq($value)";
  54. } else {
  55. $value = admin_url($value);
  56. $selector = "$('{$parent}[data-url=\"{$value}\"]')";
  57. }
  58. $browser->script(
  59. <<<JS
  60. // 如果开启了 responsive 插件,需要隐藏复制的 table,否则会选中副本的删除按钮
  61. $('.sticky-table-header').hide();
  62. {$selector}.click();
  63. JS
  64. );
  65. $browser->waitForText(__('admin.delete_confirm'), 1);
  66. $browser->script("$('{$this->formatSelector($browser, '@confirm')}').first().click()");
  67. $browser->waitForText(__('admin.delete_succeeded'), 2);
  68. return $browser;
  69. }
  70. }