78 lines
2.8 KiB
PHP
78 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Installation;
|
|
|
|
use App\Utilities\LocalBootstrapMigrator;
|
|
use App\Utilities\SystemDatabaseConfiguration;
|
|
use Mockery;
|
|
use Tests\TestCase;
|
|
|
|
class UpdateLocalBootstrapDatabaseTest extends TestCase
|
|
{
|
|
public function test_shared_system_database_is_never_migrated_by_local_update_command(): void
|
|
{
|
|
config(['app.installed' => true]);
|
|
|
|
$configuration = Mockery::mock(SystemDatabaseConfiguration::class);
|
|
$configuration->shouldReceive('current')->once()->andReturn([
|
|
'connection' => 'mysql',
|
|
'driver' => 'mysql',
|
|
'host' => 'shared-db.test',
|
|
'mode' => 'shared',
|
|
]);
|
|
$this->app->instance(SystemDatabaseConfiguration::class, $configuration);
|
|
|
|
$this->artisan('local-bootstrap:update')
|
|
->expectsOutputToContain('本机不会执行数据库迁移')
|
|
->assertSuccessful();
|
|
}
|
|
|
|
public function test_uninstalled_environment_does_not_run_migrations(): void
|
|
{
|
|
config(['app.installed' => false]);
|
|
|
|
$configuration = Mockery::mock(SystemDatabaseConfiguration::class);
|
|
$configuration->shouldNotReceive('current');
|
|
$this->app->instance(SystemDatabaseConfiguration::class, $configuration);
|
|
|
|
$this->artisan('local-bootstrap:update')->assertSuccessful();
|
|
}
|
|
|
|
public function test_nonstandard_bootstrap_connection_is_rejected(): void
|
|
{
|
|
config(['app.installed' => true]);
|
|
|
|
$configuration = Mockery::mock(SystemDatabaseConfiguration::class);
|
|
$configuration->shouldReceive('current')->once()->andReturn([
|
|
'connection' => 'mysql',
|
|
'driver' => 'mysql',
|
|
'host' => 'unexpected-host',
|
|
'mode' => 'bootstrap',
|
|
]);
|
|
$this->app->instance(SystemDatabaseConfiguration::class, $configuration);
|
|
|
|
$this->artisan('local-bootstrap:update')->assertFailed();
|
|
}
|
|
|
|
public function test_standard_local_bootstrap_database_is_updated_automatically(): void
|
|
{
|
|
config(['app.installed' => true]);
|
|
|
|
$configuration = Mockery::mock(SystemDatabaseConfiguration::class);
|
|
$configuration->shouldReceive('current')->once()->andReturn([
|
|
'connection' => 'mysql',
|
|
'driver' => 'mysql',
|
|
'host' => 'mysql',
|
|
'mode' => 'bootstrap',
|
|
]);
|
|
$this->app->instance(SystemDatabaseConfiguration::class, $configuration);
|
|
$migrator = Mockery::mock(LocalBootstrapMigrator::class);
|
|
$migrator->shouldReceive('run')->once()->andReturn(0);
|
|
$this->app->instance(LocalBootstrapMigrator::class, $migrator);
|
|
|
|
$this->artisan('local-bootstrap:update')
|
|
->expectsOutputToContain('本机临时引导库已自动更新')
|
|
->assertSuccessful();
|
|
}
|
|
}
|