CreatesApplication.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace Tests;
  3. use Dcat\Admin\Models\Administrator;
  4. use Illuminate\Contracts\Console\Kernel;
  5. use Illuminate\Filesystem\Filesystem;
  6. use Illuminate\Support\Arr;
  7. use Illuminate\Support\Facades\Artisan;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\Schema;
  10. trait CreatesApplication
  11. {
  12. public function createApplication()
  13. {
  14. $app = require $this->getAppPath();
  15. $app->make(Kernel::class)->bootstrap();
  16. return $app;
  17. }
  18. protected function boot()
  19. {
  20. $this->config();
  21. $this->artisan('admin:publish');
  22. Schema::defaultStringLength(191);
  23. $this->artisan('admin:install');
  24. $this->migrateTestTables();
  25. require __DIR__.'/helpers.php';
  26. require __DIR__.'/resources/seeds/factory.php';
  27. view()->addNamespace('admin-tests', __DIR__.'/resources/views');
  28. }
  29. protected function config()
  30. {
  31. $adminConfig = require __DIR__.'/resources/config/admin.php';
  32. $config = $this->app['config'];
  33. $config->set('database.default', 'mysql');
  34. $config->set('database.connections.mysql.host', env('DB_HOST', 'localhost'));
  35. $config->set('database.connections.mysql.database', env('DB_DATABASE', 'laravel_dcat_admin_test'));
  36. $config->set('database.connections.mysql.username', env('DB_USERNAME', 'root'));
  37. $config->set('database.connections.mysql.password', env('DB_PASSWORD', ''));
  38. $config->set('app.key', 'AckfSECXIvnK5r28GVIWUAxmbBSjTsmF');
  39. $config->set('filesystems', require __DIR__.'/resources/config/filesystems.php');
  40. $config->set('admin', $adminConfig);
  41. $config->set('app.debug', true);
  42. foreach (Arr::dot(Arr::get($adminConfig, 'auth'), 'auth.') as $key => $value) {
  43. $this->app['config']->set($key, $value);
  44. }
  45. }
  46. protected function getAppPath()
  47. {
  48. $path = __DIR__.'/../bootstrap/app.php';
  49. if (! is_file($path)) {
  50. $path = __DIR__.'/../../bootstrap/app.php';
  51. }
  52. return $path;
  53. }
  54. protected function destory()
  55. {
  56. (new \CreateAdminTables())->down();
  57. (new \CreateTestTables())->down();
  58. DB::select("delete from `migrations` where `migration` = '2016_01_04_173148_create_admin_tables'");
  59. DB::select("delete from `migrations` where `migration` = '2016_11_22_093148_create_test_tables'");
  60. Artisan::call('migrate:rollback');
  61. }
  62. public function migrateTestTables()
  63. {
  64. $fileSystem = new Filesystem();
  65. $fileSystem->requireOnce(__DIR__.'/resources/migrations/2016_11_22_093148_create_test_tables.php');
  66. (new \CreateTestTables())->up();
  67. }
  68. /**
  69. * @return Administrator
  70. */
  71. protected function getUser()
  72. {
  73. if ($this->user) {
  74. return $this->user;
  75. }
  76. return $this->user = Administrator::first();
  77. }
  78. }