repository = Mockery::mock(DaemonServerRepository::class); $this->app->instance(DaemonServerRepository::class, $this->repository); } public function testServerIsSuspendedAndUnsuspended() { $server = $this->createServerModel(['suspended' => false]); $this->repository->expects('setServer')->twice()->andReturnSelf(); $this->repository->expects('suspend')->with(false)->andReturnUndefined(); $this->getService()->toggle($server, SuspensionService::ACTION_SUSPEND); $server->refresh(); $this->assertTrue($server->suspended); $this->repository->expects('suspend')->with(true)->andReturnUndefined(); $this->getService()->toggle($server, SuspensionService::ACTION_UNSUSPEND); $server->refresh(); $this->assertFalse($server->suspended); } public function testNoActionIsTakenIfSuspensionStatusIsUnchanged() { $server = $this->createServerModel(['suspended' => false]); $this->getService()->toggle($server, SuspensionService::ACTION_UNSUSPEND); $server->refresh(); $this->assertFalse($server->suspended); $server->update(['suspended' => true]); $this->getService()->toggle($server, SuspensionService::ACTION_SUSPEND); $server->refresh(); $this->assertTrue($server->suspended); } public function testExceptionIsThrownIfInvalidActionsArePassed() { $server = $this->createServerModel(); $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Expected one of: "suspend", "unsuspend". Got: "foo"'); $this->getService()->toggle($server, 'foo'); } /** * @return \Pterodactyl\Services\Servers\SuspensionService */ private function getService() { return $this->app->make(SuspensionService::class); } }