textRepo = new FakeTextRepository(); $this->textRepo->create(new CreateTextDto( name: 'test text', )); $this->controller = new TextController($this->textRepo); } public function test_get_one_text(): void { $response = $this->controller->getText( new Response(), 0, ); $this->assertEquals( json_encode([ 'id' => 0, 'name' => 'test text', ]), $response->getBody() ); } public function test_get_all_texts(): void { $this->textRepo->create(new CreateTextDto( name: 'test text 2', )); $response = $this->controller->getTexts(new Response()); $this->assertEquals( json_encode([ [ 'id' => 0, 'name' => 'test text', ], [ 'id' => 1, 'name' => 'test text 2', ], ]), $response->getBody() ); } public function test_create_text(): void { $request = new ServerRequestFactory() ->createServerRequest('POST', 'http://localhost/texts') ->withParsedBody(['name' => 'my new text']); $response = $this->controller->createText( $request, new Response(), new CreateText( $this->textRepo, new FakeNodeRepository(), ), ); $this->assertEquals( json_encode([ 'id' => 1, 'name' => 'my new text', ]), $response->getBody() ); } public function test_create_text_returns_400_when_name_missing(): void { $request = new ServerRequestFactory() ->createServerRequest('POST', 'http://localhost/texts') ->withParsedBody([]); $response = $this->controller->createText( $request, new Response(), new CreateText( $this->textRepo, new FakeNodeRepository(), ), ); $this->assertEquals(400, $response->getStatusCode()); $body = json_decode($response->getBody(), true); $this->assertArrayHasKey('error', $body); } }