jqh пре 5 година
родитељ
комит
48a1921044

+ 1 - 1
.gitignore

@@ -1,4 +1,4 @@
-./vendor/
+/vendor/
 composer.lock
 .idea
 .php_cs.cache

+ 23 - 6
tests/Browser/Components/Component.php

@@ -8,25 +8,42 @@ use Laravel\Dusk\Component as BaseComponent;
 abstract class Component extends BaseComponent
 {
     /**
+     * 解析css选择器别名.
+     *
      * @param Browser $browser
+     * @param string $selector
      *
      * @return string
      */
-    public function parentSelector(Browser $browser)
+    public function formatSelector(Browser $browser, $selector = '')
     {
-        return $browser->resolver->prefix;
+        return $browser->resolver->format($selector);
     }
 
     /**
-     * 获取完整的css选择器
+     * 解析css选择器别名但不使用前缀.
      *
-     * @param Browser $browser
+     * @param \Laravel\Dusk\Browser $browser
      * @param string $selector
      *
      * @return string
      */
-    public function formatSelector(Browser $browser, $selector = '')
+    public function formatSelectorWithoutPrefix(Browser $browser, $selector = '')
     {
-        return $browser->resolver->format($selector);
+        $resolver = clone $browser->resolver;
+
+        $resolver->prefix = '';
+
+        return $resolver->format($selector);
+    }
+
+    /**
+     * @param Browser $browser
+     *
+     * @return string
+     */
+    public function parentSelector(Browser $browser)
+    {
+        return $browser->resolver->prefix;
     }
 }

+ 20 - 0
tests/Browser/Components/Grid/Actions/BatchDelete.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace Tests\Browser\Components\Grid\Actions;
+
+class BatchDelete extends Delete
+{
+    /**
+     * 读取组件的元素快捷方式
+     *
+     * @return array
+     */
+    public function elements()
+    {
+        return [
+            '@item' => 'a[data-action="batch-delete"]:visible',
+            '@confirm' => '.swal2-confirm',
+            '@cancel' => '.swal2-cancel',
+        ];
+    }
+}

+ 42 - 3
tests/Browser/Components/Grid/Actions/Delete.php

@@ -70,13 +70,52 @@ class Delete extends Component
 $('.sticky-table-header').hide();
 {$selector}.click();
 JS
-
         );
 
-        $browser->waitForText(__('admin.delete_confirm'), 1);
-        $browser->script("$('{$this->formatSelector($browser, '@confirm')}').first().click()");
+        $this->waitForConfirmDialog($browser);
+        $this->clickConfirmButton($browser);
+        $this->waitForSucceeded($browser);
+
+        return $browser;
+    }
+
+    /**
+     * 等待确认弹窗.
+     *
+     * @param \Laravel\Dusk\Browser $browser
+     *
+     * @return \Laravel\Dusk\Browser
+     */
+    public function waitForConfirmDialog(Browser $browser)
+    {
+        return $browser->waitForText(__('admin.delete_confirm'), 1);
+    }
+
+    /**
+     * 等待成功信息.
+     *
+     * @param \Laravel\Dusk\Browser $browser
+     *
+     * @return \Laravel\Dusk\Browser
+     */
+    public function waitForSucceeded(Browser $browser)
+    {
         $browser->waitForText(__('admin.delete_succeeded'), 2);
 
         return $browser;
     }
+
+    /**
+     * 点击确认删除按钮.
+     *
+     * @param \Laravel\Dusk\Browser $browser
+     *
+     * @return \Laravel\Dusk\Browser
+     */
+    public function clickConfirmButton(Browser $browser)
+    {
+        $browser->script("$('{$this->formatSelector($browser, '@confirm')}').first().click()");
+
+        return $browser;
+    }
 }

+ 15 - 16
tests/Browser/OperationLogTest.php

@@ -4,6 +4,7 @@ namespace Tests\Browser;
 
 use Dcat\Admin\Models\OperationLog;
 use Laravel\Dusk\Browser;
+use Tests\Browser\Components\Grid\Actions\BatchDelete;
 use Tests\Browser\Components\Grid\BatchActions;
 use Tests\Browser\Components\Grid\Actions\Delete;
 use Tests\Browser\Components\Grid\RowSelector;
@@ -16,7 +17,7 @@ use Tests\TestCase;
  */
 class OperationLogTest extends TestCase
 {
-    public function testOperationLogIndex()
+    public function testIndex()
     {
         $this->browse(function (Browser $browser) {
             $browser->visit(test_admin_path('auth/menu'))
@@ -27,13 +28,13 @@ class OperationLogTest extends TestCase
                 ->assertSee(__('admin.refresh'))
                 ->assertSee(__('admin.filter'))
                 ->assertSee('ID')
-                ->assertSee(__('admin.user'))
-                ->assertSee(__('admin.method'))
-                ->assertSee(__('admin.uri'))
+                ->assertSee(strtoupper(__('admin.user')))
+                ->assertSee(strtoupper(__('admin.method')))
+                ->assertSee(strtoupper(__('admin.uri')))
                 ->assertSee('IP')
-                ->assertSee(__('admin.input'))
-                ->assertSee(__('admin.created_at'))
-                ->assertSee(__('admin.action'))
+                ->assertSee(strtoupper(__('admin.input')))
+                ->assertSee(strtoupper(__('admin.created_at')))
+                ->assertSee(strtoupper(__('admin.action')))
                 ->waitForText(__('admin.responsive.display'), 2)
                 ->assertSee(__('admin.responsive.display_all'));
         });
@@ -117,15 +118,13 @@ class OperationLogTest extends TestCase
                 $browser->choose(__('admin.delete'));
             });
 
-//            $browser->waitForText(__('admin.delete_confirm'), 3);
-//            $browser->script("$('.swal2-confirm').first().click()");
-//            $browser->waitForText(__('admin.delete_succeeded'), 3);
-//
-//            $this->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
-//                ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
-//                ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
-//                ->notSeeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET'])
-//                ->assertEquals(0, OperationLog::count());
+            $browser->with(new BatchDelete(), function (Browser $browser) {
+                $browser->waitForConfirmDialog();
+                $browser->clickConfirmButton();
+                $browser->waitForSucceeded();
+            });
+
+            $this->assertEquals(0, OperationLog::count());
         });
     }
 }

+ 4 - 4
tests/CreatesApplication.php

@@ -53,10 +53,10 @@ trait CreatesApplication
         $config = $this->app['config'];
 
         $config->set('database.default', 'mysql');
-        $config->set('database.connections.mysql.host', env('MYSQL_HOST', 'localhost'));
-        $config->set('database.connections.mysql.database', 'laravel_dcat_admin_test');
-        $config->set('database.connections.mysql.username', env('MYSQL_USER', 'root'));
-        $config->set('database.connections.mysql.password', env('MYSQL_PASSWORD', ''));
+        $config->set('database.connections.mysql.host', env('DB_HOST', 'localhost'));
+        $config->set('database.connections.mysql.database', env('DB_DATABASE', 'laravel_dcat_admin_test'));
+        $config->set('database.connections.mysql.username', env('DB_USERNAME', 'root'));
+        $config->set('database.connections.mysql.password', env('DB_PASSWORD', ''));
         $config->set('app.key', 'AckfSECXIvnK5r28GVIWUAxmbBSjTsmF');
         $config->set('filesystems', require __DIR__.'/resources/config/filesystems.php');
         $config->set('admin', $adminConfig);