<?php namespace Tests\Unit; use App\User; use App\Organization; use App\Server; use App\Record; use App\Status; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { use RefreshDatabase; public function testClassInstance() { $class = Server::class; $server = new $class; $this->assertEquals("App\Server", get_class($server)); } public function testRelations() { $user = new User(); $user->name = "test"; $user->email = "test@example.com"; $user->password = "abc123"; $user->save(); $organization = new Organization(); $organization->name = "Org"; $organization->save(); $organization->users()->save($user); $this->assertEquals( "Org", $user->organizations()->first()->name ); } /** * @group status */ public function testStatusComparison() { $warning = Status::warning(); $error = Status::error(); $this->assertGreaterThan($warning, $error); $this->assertTrue($error > $warning); $this->assertEquals(Status::error(), max($warning, $error)); } /** * @group status-change */ public function testStatusChangeDetection() { $organization = new Organization(); $organization->name = "ACME"; $organization->save(); $server = new \App\Server(); $server->name = "My test server"; $server->organization()->associate($organization); $server->save(); $server_id = $server->id; $record = new Record(); $record->server_id = $server_id; $record->time = time(); $record->data = ""; $record->save(); $record_id = $record->id; $user = new User(); $user->name = "Test"; $user->email = "thibault.debatty@gmail.com"; $user->password = "qmlskdj"; $user->save(); $organization->users()->attach($user->id); // Insert a fake status change $change = new \App\StatusChange(); $change->status = \App\Status::ERROR; $change->time = time(); $change->server_id = $server_id; $change->save(); // Check if a new StatusChange was correctly saved $last_change = $server->lastChange(); $this->assertEquals( $change->status, $last_change->status ); // Insert multiple status changes to simulate bouncing for ($i = 0; $i < 4; $i++) { $change = new \App\StatusChange(); $change->status = 155; $change->server_id = $server_id; $change->time = time() + $i; $change->save(); } } }