Quellcode durchsuchen

单测删除组件

jqh vor 5 Jahren
Ursprung
Commit
0afa754c35
2 geänderte Dateien mit 30 neuen und 35 gelöschten Zeilen
  1. 26 31
      tests/Browser/Components/Grid/Actions/Delete.php
  2. 4 4
      tests/Browser/OperationLogTest.php

+ 26 - 31
tests/Browser/Components/Grid/Actions/Delete.php

@@ -1,12 +1,12 @@
 <?php
 
-namespace Tests\Browser\Components\Grid;
+namespace Tests\Browser\Components\Grid\Actions;
 
 use Laravel\Dusk\Browser;
 use Tests\Browser\Components\Component;
 
 /**
- * 行选择器.
+ * 删除动作.
  */
 class Delete extends Component
 {
@@ -17,7 +17,7 @@ class Delete extends Component
      */
     public function selector()
     {
-        return '@item';
+        return '';
     }
 
     /**
@@ -28,7 +28,6 @@ class Delete extends Component
      */
     public function assert(Browser $browser)
     {
-        $browser->assertVisible('table thead th .checkbox-grid');
     }
 
     /**
@@ -39,8 +38,9 @@ class Delete extends Component
     public function elements()
     {
         return [
-            '@all' => 'input.select-all',
-            '@item' => 'input.grid-row-checkbox',
+            '@item' => 'a[data-action="delete"]:visible',
+            '@confirm' => '.swal2-confirm',
+            '@cancel' => '.swal2-cancel',
         ];
     }
 
@@ -52,35 +52,30 @@ class Delete extends Component
      *
      * @return Browser
      */
-    public function choose(Browser $browser, $value)
+    public function delete(Browser $browser, $value)
     {
-        foreach ((array) $value as $v) {
-            $browser->script(
-                <<<JS
-setTimeout(function () {
-    $('{$this->formatSelector($browser)}[data-id="{$v}"]').prop('checked', true);
-}, 10)
-JS
-            );
+        $parent = $this->formatSelector($browser, '@item');
+
+        if (is_numeric($value)) {
+            $selector = "$('{$parent}').eq($value)";
+        } else {
+            $value = admin_url($value);
+
+            $selector = "$('{$parent}[data-url=\"{$value}\"]')";
         }
 
-        return $browser;
-    }
+        $browser->script(
+            <<<JS
+// 如果开启了 responsive 插件,需要隐藏复制的 table,否则会选中副本的删除按钮
+$('.sticky-table-header').hide();
+{$selector}.click();
+JS
 
-    /**
-     * 选中所有
-     *
-     * @param Browser $browser
-     *
-     * @return Browser
-     */
-    public function selectAll(Browser $browser)
-    {
-        $browser->script("Dcat.ready(
-            setTimeout(function () {
-                $('.grid-select-all').first().click()
-            }, 10)
-        );");
+        );
+
+        $browser->waitForText(__('admin.delete_confirm'), 1);
+        $browser->script("$('{$this->formatSelector($browser, '@confirm')}').first().click()");
+        $browser->waitForText(__('admin.delete_succeeded'), 2);
 
         return $browser;
     }

+ 4 - 4
tests/Browser/OperationLogTest.php

@@ -5,6 +5,7 @@ namespace Tests\Browser;
 use Dcat\Admin\Models\OperationLog;
 use Laravel\Dusk\Browser;
 use Tests\Browser\Components\Grid\BatchActions;
+use Tests\Browser\Components\Grid\Actions\Delete;
 use Tests\Browser\Components\Grid\RowSelector;
 use Tests\TestCase;
 
@@ -77,10 +78,9 @@ class OperationLogTest extends TestCase
                 ->assertPathIs(test_admin_path('auth/logs'))
                 ->pause(500);
 
-            $browser->script("$('a[data-action=delete]').first().click()");
-            $browser->waitForText(__('admin.delete_confirm'), 3);
-            $browser->script("$('.swal2-confirm').first().click()");
-            $browser->waitForText(__('admin.delete_succeeded'), 3);
+            $browser->with(new Delete(), function (Browser $browser) {
+                $browser->delete(0);
+            });
 
             $this->assertEquals(0, OperationLog::count());
         });