jqh 5 years ago
parent
commit
cb47ab8056

+ 1 - 0
.travis.yml

@@ -41,6 +41,7 @@ install:
   - php artisan migrate:rollback
   - php artisan dusk:chrome-driver
   - cp -f ./tests/routes.php ./app/Admin/
+  - cp -rf ./tests/resources/config ./config/
 
 before_script:
   - export DISPLAY=:99.0

+ 9 - 9
tests/Browser/Cases/AuthTest.php

@@ -17,7 +17,7 @@ class AuthTest extends TestCase
     public function testLoginPage()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('auth/login'))
+            $browser->visit(admin_base_path('auth/login'))
                 ->assertSeeText(__('admin.login'));
         });
     }
@@ -25,8 +25,8 @@ class AuthTest extends TestCase
     public function testVisitWithoutLogin()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('/'))
-                ->assertPathIs(test_admin_path('auth/login'))
+            $browser->visit(admin_base_path('/'))
+                ->assertPathIs(admin_base_path('auth/login'))
                 ->assertGuest('admin');
         });
     }
@@ -36,14 +36,14 @@ class AuthTest extends TestCase
         $this->browse(function (Browser $browser) {
             $credentials = ['username' => 'admin', 'password' => 'admin'];
 
-            $browser->visit(test_admin_path('auth/login'))
-                ->assertPathIs(test_admin_path('auth/login'))
+            $browser->visit(admin_base_path('auth/login'))
+                ->assertPathIs(admin_base_path('auth/login'))
                 ->assertSeeText(__('admin.login'))
                 ->type('username', $credentials['username'])
                 ->type('password', $credentials['password'])
                 ->press(__('admin.login'))
-                ->waitForLocation(test_admin_path('/'), 3)
-                ->assertPathIs(test_admin_path('/'))
+                ->waitForLocation(admin_base_path('/'), 3)
+                ->assertPathIs(admin_base_path('/'))
                 ->assertSeeText('Administrator')
                 ->assertSeeText('Dashboard')
                 ->assertSeeText('Description...')
@@ -70,8 +70,8 @@ class AuthTest extends TestCase
     public function testLogout()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('auth/logout'))
-                ->assertPathIs(test_admin_path('auth/login'))
+            $browser->visit(admin_base_path('auth/logout'))
+                ->assertPathIs(admin_base_path('auth/login'))
                 ->assertGuest('admin');
         });
     }

+ 3 - 3
tests/Browser/Cases/FormHasManyTest.php → tests/Browser/Cases/Form/HasManyTest.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace Tests\Browser\Cases;
+namespace Tests\Browser\Cases\Form;
 
 use Laravel\Dusk\Browser;
 use Tests\Browser\Pages\PainterCreatePage;
@@ -12,9 +12,9 @@ use Tests\TestCase;
 /**
  * 一对多表单功能测试.
  *
- * @group form-has-many
+ * @group form:has-many
  */
-class FormHasManyTest extends TestCase
+class HasManyTest extends TestCase
 {
     /**
      * 测试新增页面.

+ 24 - 0
tests/Browser/Cases/Form/ImageTest.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace Tests\Browser\Cases\Form;
+
+use Laravel\Dusk\Browser;
+use Tests\TestCase;
+
+/**
+ * 图片上传测试
+ *
+ * @group form:image
+ */
+class ImageTest extends TestCase
+{
+    public function test()
+    {
+        $this->browse(function (Browser $browser) {
+            $browser->visit(admin_base_path('tests/users/create'))
+                ->attach('file-avatar', __DIR__.'/../../../resources/assets/test.jpg');
+
+            $this->assertTrue(true);
+        });
+    }
+}

+ 10 - 10
tests/Browser/Cases/IndexTest.php

@@ -15,7 +15,7 @@ class IndexTest extends TestCase
     public function testIndex()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('/'))
+            $browser->visit(admin_base_path('/'))
                 ->assertSeeText('Administrator')
                 ->assertSeeText('Dashboard')
                 ->assertSeeText('Description...')
@@ -32,29 +32,29 @@ class IndexTest extends TestCase
     public function testClickMenu()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('/'))
+            $browser->visit(admin_base_path('/'))
                 ->within('.main-menu-content', function (Browser $browser) {
                     $browser
                         ->clickLink('Admin')
                         ->whenTextAvailable('Users', 2)
                         ->clickLink('Users')
-                        ->assertPathIs(test_admin_path('auth/users'))
+                        ->assertPathIs(admin_base_path('auth/users'))
                         ->clickLink('Roles')
-                        ->assertPathIs(test_admin_path('auth/roles'))
+                        ->assertPathIs(admin_base_path('auth/roles'))
                         ->clickLink('Permission')
-                        ->assertPathIs(test_admin_path('auth/permissions'))
+                        ->assertPathIs(admin_base_path('auth/permissions'))
                         ->clickLink('Menu')
-                        ->assertPathIs(test_admin_path('auth/menu'))
+                        ->assertPathIs(admin_base_path('auth/menu'))
                         ->clickLink('Operation log')
-                        ->assertPathIs(test_admin_path('auth/logs'))
+                        ->assertPathIs(admin_base_path('auth/logs'))
                         ->clickLink('Helpers')
                         ->whenTextAvailable('Extensions', 2)
                         ->clickLink('Extensions')
-                        ->assertPathIs(test_admin_path('helpers/extensions'))
+                        ->assertPathIs(admin_base_path('helpers/extensions'))
                         ->clickLink('Scaffold')
-                        ->assertPathIs(test_admin_path('helpers/scaffold'))
+                        ->assertPathIs(admin_base_path('helpers/scaffold'))
                         ->clickLink('Icons')
-                        ->assertPathIs(test_admin_path('helpers/icons'));
+                        ->assertPathIs(admin_base_path('helpers/icons'));
                 });
         });
     }

+ 2 - 2
tests/Browser/Cases/MenuTest.php

@@ -66,7 +66,7 @@ class MenuTest extends TestCase
             $browser->script("$(\"input[name='title']\").val(\"{$newTitle}\")");
 
             $browser->press(__('admin.submit'))
-                ->waitForLocation(test_admin_path('auth/menu'), 2);
+                ->waitForLocation(admin_base_path('auth/menu'), 2);
 
             $this->seeInDatabase(config('admin.database.menu_table'), ['title' => $newTitle])
                 ->assertEquals(7, Menu::count());
@@ -117,7 +117,7 @@ class MenuTest extends TestCase
                         ->clickLink(__('admin.submit'));
                 }, 2)
                 ->waitForText(__('admin.update_succeeded'), 2)
-                ->waitForLocation(test_admin_path('auth/menu'), 1)
+                ->waitForLocation(admin_base_path('auth/menu'), 1)
                 ->waitForText('balabala', 2);
 
             // 检测是否写入数据库

+ 32 - 32
tests/Browser/Cases/OperationLogTest.php

@@ -20,9 +20,9 @@ class OperationLogTest extends TestCase
     public function testIndex()
     {
         $this->browse(function (Browser $browser) {
-            $browser->visit(test_admin_path('auth/menu'))
-                ->assertPathIs(test_admin_path('auth/menu'))
-                ->visit(test_admin_path('auth/logs'))
+            $browser->visit(admin_base_path('auth/menu'))
+                ->assertPathIs(admin_base_path('auth/menu'))
+                ->visit(admin_base_path('auth/logs'))
                 ->assertSeeText(__('admin.operation_log'))
                 ->assertSeeText(__('admin.list'))
                 ->assertSeeText(__('admin.refresh'))
@@ -45,21 +45,21 @@ class OperationLogTest extends TestCase
         $this->browse(function (Browser $browser) {
             $table = config('admin.database.operation_log_table');
 
-            $browser->visit(test_admin_path('auth/menu'))
-                ->assertPathIs(test_admin_path('auth/menu'))
-                ->visit(test_admin_path('auth/users'))
-                ->assertPathIs(test_admin_path('auth/users'))
-                ->visit(test_admin_path('auth/permissions'))
-                ->assertPathIs(test_admin_path('auth/permissions'))
-                ->visit(test_admin_path('auth/roles'))
-                ->assertPathIs(test_admin_path('auth/roles'))
-                ->visit(test_admin_path('auth/logs'))
-                ->assertPathIs(test_admin_path('auth/logs'));
-
-            $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET']);
+            $browser->visit(admin_base_path('auth/menu'))
+                ->assertPathIs(admin_base_path('auth/menu'))
+                ->visit(admin_base_path('auth/users'))
+                ->assertPathIs(admin_base_path('auth/users'))
+                ->visit(admin_base_path('auth/permissions'))
+                ->assertPathIs(admin_base_path('auth/permissions'))
+                ->visit(admin_base_path('auth/roles'))
+                ->assertPathIs(admin_base_path('auth/roles'))
+                ->visit(admin_base_path('auth/logs'))
+                ->assertPathIs(admin_base_path('auth/logs'));
+
+            $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/menu'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/permissions'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/roles'), '/'), 'method' => 'GET']);
         });
 
         $this->assertSame(4, OperationLog::count());
@@ -72,11 +72,11 @@ class OperationLogTest extends TestCase
 
             $this->assertEquals(0, OperationLog::count());
 
-            $browser->visit(test_admin_path('auth/users'));
-            $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET']);
+            $browser->visit(admin_base_path('auth/users'));
+            $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET']);
 
-            $browser->visit(test_admin_path('auth/logs'))
-                ->assertPathIs(test_admin_path('auth/logs'))
+            $browser->visit(admin_base_path('auth/logs'))
+                ->assertPathIs(admin_base_path('auth/logs'))
                 ->pause(500);
 
             $browser->with(new Delete(), function (Browser $browser) {
@@ -92,21 +92,21 @@ class OperationLogTest extends TestCase
         $this->browse(function (Browser $browser) {
             $table = config('admin.database.operation_log_table');
 
-            $browser->visit(test_admin_path('auth/menu'))
-                ->visit(test_admin_path('auth/users'))
-                ->visit(test_admin_path('auth/permissions'))
-                ->visit(test_admin_path('auth/roles'));
+            $browser->visit(admin_base_path('auth/menu'))
+                ->visit(admin_base_path('auth/users'))
+                ->visit(admin_base_path('auth/permissions'))
+                ->visit(admin_base_path('auth/roles'));
 
             $number = 4;
 
-            $this->seeInDatabase($table, ['path' => trim(test_admin_path('auth/menu'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/users'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/permissions'), '/'), 'method' => 'GET'])
-                ->seeInDatabase($table, ['path' => trim(test_admin_path('auth/roles'), '/'), 'method' => 'GET'])
+            $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/menu'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/permissions'), '/'), 'method' => 'GET'])
+                ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/roles'), '/'), 'method' => 'GET'])
                 ->assertEquals($number, OperationLog::count());
 
-            $browser->visit(test_admin_path('auth/logs'))
-                ->assertPathIs(test_admin_path('auth/logs'));
+            $browser->visit(admin_base_path('auth/logs'))
+                ->assertPathIs(admin_base_path('auth/logs'));
 
             $browser->with(new RowSelector(), function (Browser $browser) {
                 $browser->selectAll();

+ 1 - 1
tests/Browser/Pages/MenuEditPage.php

@@ -21,7 +21,7 @@ class MenuEditPage extends Page
      */
     public function url()
     {
-        return test_admin_path("auth/menu/{$this->id}/edit");
+        return admin_base_path("auth/menu/{$this->id}/edit");
     }
 
     /**

+ 1 - 1
tests/Browser/Pages/MenuPage.php

@@ -14,7 +14,7 @@ class MenuPage extends Page
      */
     public function url()
     {
-        return test_admin_path('auth/menu');
+        return admin_base_path('auth/menu');
     }
 
     /**

+ 2 - 2
tests/Browser/Pages/PainterCreatePage.php

@@ -14,7 +14,7 @@ class PainterCreatePage extends Page
      */
     public function url()
     {
-        return test_admin_path('tests/painters/create');
+        return admin_base_path('tests/painters/create');
     }
 
     /**
@@ -105,7 +105,7 @@ JS
         return $browser->with('@form', function (Browser $browser) {
             $browser->press(__('admin.submit'));
             $browser->waitForTextInBody(__('admin.save_succeeded'), 2);
-            $browser->waitForLocation(test_admin_path('tests/painters'), 1);
+            $browser->waitForLocation(admin_base_path('tests/painters'), 1);
         });
     }
 }

+ 1 - 1
tests/Browser/Pages/PainterEditPage.php

@@ -29,7 +29,7 @@ class PainterEditPage extends PainterCreatePage
      */
     public function url()
     {
-        return test_admin_path("tests/painters/{$this->painter->getKey()}/edit");
+        return admin_base_path("tests/painters/{$this->painter->getKey()}/edit");
     }
 
     public function assert(Browser $browser)

+ 2 - 2
tests/Controllers/UserController.php

@@ -188,8 +188,8 @@ class UserController extends Controller
         $form->text('profile.last_name');
         $form->text('profile.postcode')->help('Please input your postcode');
         $form->textarea('profile.address')->rows(15);
-        $form->map('profile.latitude', 'profile.longitude', 'Position');
-        $form->color('profile.color');
+        //$form->map('profile.latitude', 'profile.longitude', 'Position');
+        $form->text('profile.color');
         $form->datetime('profile.start_at');
         $form->datetime('profile.end_at');
 

+ 3 - 24
tests/CreatesApplication.php

@@ -5,7 +5,6 @@ namespace Tests;
 use Dcat\Admin\Models\Administrator;
 use Illuminate\Contracts\Console\Kernel;
 use Illuminate\Filesystem\Filesystem;
-use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\Artisan;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Schema;
@@ -23,8 +22,6 @@ trait CreatesApplication
 
     protected function boot()
     {
-        $this->config();
-
         $this->artisan('admin:publish');
 
         Schema::defaultStringLength(191);
@@ -40,27 +37,6 @@ trait CreatesApplication
         view()->addNamespace('admin-tests', __DIR__.'/resources/views');
     }
 
-    protected function config()
-    {
-        $adminConfig = require __DIR__.'/resources/config/admin.php';
-
-        $config = $this->app['config'];
-
-        $config->set('database.default', 'mysql');
-        $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);
-        $config->set('app.debug', true);
-
-        foreach (Arr::dot(Arr::get($adminConfig, 'auth'), 'auth.') as $key => $value) {
-            $this->app['config']->set($key, $value);
-        }
-    }
-
     protected function getAppPath()
     {
         $path = __DIR__.'/../bootstrap/app.php';
@@ -68,6 +44,9 @@ trait CreatesApplication
         if (! is_file($path)) {
             $path = __DIR__.'/../../bootstrap/app.php';
         }
+        if (! is_file($path)) {
+            $path = __DIR__.'/../../../bootstrap/app.php';
+        }
 
         return $path;
     }

+ 19 - 6
tests/helpers.php

@@ -1,12 +1,25 @@
 <?php
 
-if (! function_exists('test_admin_path')) {
-    function test_admin_path($path)
+if (! function_exists('test_path')) {
+    /**
+     * @param string $file
+     *
+     * @return string
+     */
+    function test_path($file = '')
     {
-        if (is_object($path)) {
-            return $path;
-        }
+        return __DIR__.($file ? '/'.trim($file, '/') : '');
+    }
+}
 
-        return admin_base_path($path);
+if (! function_exists('test_resource_path')) {
+    /**
+     * @param string $file
+     *
+     * @return string
+     */
+    function test_resource_path($file = '')
+    {
+        return test_path('resources'.($file ? '/'.trim($file, '/') : ''));
     }
 }

+ 25 - 23
tests/resources/config/admin.php

@@ -119,8 +119,6 @@ return [
 
         'controller' => Dcat\Admin\Controllers\AuthController::class,
 
-        'login_view' => 'admin::login',
-
         'guard' => 'admin',
 
         'guards' => [
@@ -200,7 +198,7 @@ return [
     'menu' => [
         'cache' => [
             // enable cache or not
-            'enable' => true,
+            'enable' => false,
             'store'  => 'file',
         ],
 
@@ -283,6 +281,11 @@ return [
         // Only logging allowed methods in the list
         'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],
 
+        'secret_fields' => [
+            'password',
+            'password_confirmation',
+        ],
+
         // Routes that will not log to database.
         // All method to path like: auth/logs/*/edit
         // or specific method to path like: get:auth/logs.
@@ -301,33 +304,32 @@ return [
     */
     'map_provider' => 'google',
 
-    /*
-    |--------------------------------------------------------------------------
-    | Application Skin
-    |--------------------------------------------------------------------------
-    |
-    | This value is the skin of admin pages.
-    | @see https://adminlte.io/docs/2.4/layout
-    |
-    | Supported:
-    |    "skin-blue-light", "skin-black", "skin-black-light".
-    |
-    */
-    'skin' => 'skin-black',
-
     /*
     |--------------------------------------------------------------------------
     | Application layout
     |--------------------------------------------------------------------------
     |
     | This value is the layout of admin pages.
-    | @see https://adminlte.io/docs/2.4/layout
-    |
-    | Supported: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse",
-    | "sidebar-mini".
-    |
     */
-    'layout' => ['sidebar-mini', 'fixed'],
+    'layout' => [
+        // vertical, horizontal
+        'mainLayout_type' => 'vertical',
+
+        'body_class' => '',
+
+        'sidebar_collapsed' => false,
+
+        'blank_page' => false,
+
+        // bg-primary, bg-info, bg-warning, bg-success, bg-danger, bg-dark
+        'navbar_color' => '',
+
+        // floating, static, sticky, hidden
+        'vertical_menu_navbar_type' => 'floating',
+
+        // static, sticky, hidden
+        'footer_type' => 'static',
+    ],
 
     /*
     |--------------------------------------------------------------------------