repository = Mockery::mock(DaemonServerRepository::class); $this->app->instance(DaemonServerRepository::class, $this->repository); } public function testServerIsSuspendedAndUnsuspended() { $server = $this->createServerModel(); $this->repository->expects('setServer->sync')->twice()->andReturnSelf(); $this->getService()->toggle($server); $this->assertTrue($server->refresh()->isSuspended()); $this->getService()->toggle($server, SuspensionService::ACTION_UNSUSPEND); $this->assertFalse($server->refresh()->isSuspended()); } public function testNoActionIsTakenIfSuspensionStatusIsUnchanged() { $server = $this->createServerModel(); $this->getService()->toggle($server, SuspensionService::ACTION_UNSUSPEND); $server->refresh(); $this->assertFalse($server->isSuspended()); $server->update(['status' => Server::STATUS_SUSPENDED]); $this->getService()->toggle($server); $server->refresh(); $this->assertTrue($server->isSuspended()); } public function testExceptionIsThrownIfInvalidActionsArePassed() { $server = $this->createServerModel(); $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Expected one of: "suspend", "unsuspend". Got: "foo"'); $this->getService()->toggle($server, 'foo'); } private function getService(): SuspensionService { return $this->app->make(SuspensionService::class); } }