shortUrlService = $this->prophesize(ShortUrlServiceInterface::class); $this->action = new EditShortUrlAction($this->shortUrlService->reveal()); } /** @test */ public function invalidDataThrowsError(): void { $request = (new ServerRequest())->withParsedBody([ 'maxVisits' => 'invalid', ]); $this->expectException(ValidationException::class); $this->action->handle($request); } /** @test */ public function correctShortCodeReturnsSuccess(): void { $request = (new ServerRequest())->withAttribute('shortCode', 'abc123') ->withParsedBody([ 'maxVisits' => 5, ]); $updateMeta = $this->shortUrlService->updateMetadataByShortCode(Argument::cetera())->willReturn( new ShortUrl(''), ); $resp = $this->action->handle($request); $this->assertEquals(204, $resp->getStatusCode()); $updateMeta->shouldHaveBeenCalled(); } }