shouldReceive('checkArcadiaConformity')->once()->andReturn($result); $this->app->instance(HealthChecker::class, $healthChecker); // WHEN $this->artisan('uwil:arcadia:database:check-conformity') // THEN ->expectsOutput('Arcadia database conformity check passed. All directory probes are conform.') ->assertSuccessful(); }); it('returns failure and renders table when database has dissonances', function (): void { // GIVEN /** @var \Tests\TestCase $this */ $healthChecker = mock(HealthChecker::class); $result = new ArcadiaConformityResult( status: HealthStatus::UNHEALTHY, timestamp: Utc::now(), checks: [ new DirectoryConformityCheck('brands', ComponentStatus::DOWN, 'MARQUE', 0, 'Column LIB_MARQ missing'), ], ); $healthChecker->shouldReceive('checkArcadiaConformity')->once()->andReturn($result); $this->app->instance(HealthChecker::class, $healthChecker); // WHEN $this->artisan('uwil:arcadia:database:check-conformity') // THEN ->expectsOutput('Arcadia database conformity check failed. Dissonances detected.') ->assertFailed(); }); it('outputs JSON when --json option is passed and succeeds when conform', function (): void { // GIVEN /** @var \Tests\TestCase $this */ $healthChecker = mock(HealthChecker::class); $result = new ArcadiaConformityResult( status: HealthStatus::HEALTHY, timestamp: Utc::now(), checks: [ new DirectoryConformityCheck('brands', ComponentStatus::UP, 'MARQUE', 10), ], ); $healthChecker->shouldReceive('checkArcadiaConformity')->once()->andReturn($result); $this->app->instance(HealthChecker::class, $healthChecker); // WHEN $this->artisan('uwil:arcadia:database:check-conformity', ['--json' => true]) // THEN ->expectsOutputToContain('"status": "healthy"') ->assertSuccessful(); }); it('outputs JSON when --json option is passed and fails when non-conform', function (): void { // GIVEN /** @var \Tests\TestCase $this */ $healthChecker = mock(HealthChecker::class); $result = new ArcadiaConformityResult( status: HealthStatus::UNHEALTHY, timestamp: Utc::now(), checks: [ new DirectoryConformityCheck('brands', ComponentStatus::DOWN, 'MARQUE', 0, 'Table MARQUE not found'), ], ); $healthChecker->shouldReceive('checkArcadiaConformity')->once()->andReturn($result); $this->app->instance(HealthChecker::class, $healthChecker); // WHEN $this->artisan('uwil:arcadia:database:check-conformity', ['--json' => true]) // THEN ->expectsOutputToContain('"status": "unhealthy"') ->assertFailed(); }); });