'value']; $statusCode = 200; $response = JsonResponseFactory::createJsonResponse($data, $statusCode); $this->assertSame($statusCode, $response->getStatusCode()); $this->assertSame('application/json', $response->getHeaderLine('Content-Type')); $this->assertSame(json_encode($data), (string) $response->getBody()); } public function testCreateJsonResponseHandlesEmptyData(): void { $data = []; $statusCode = 204; $response = JsonResponseFactory::createJsonResponse($data, $statusCode); $this->assertSame($statusCode, $response->getStatusCode()); $this->assertSame('application/json', $response->getHeaderLine('Content-Type')); $this->assertSame(json_encode($data), (string) $response->getBody()); } public function testCreateJsonResponseThrowsExceptionOnInvalidData(): void { $this->expectException(\JsonException::class); $data = ["invalid" => "\xB1\x31"]; JsonResponseFactory::createJsonResponse($data); } public function testCreateResponseReturnsValidResponse(): void { $code = 200; $reasonPhrase = 'OK'; $factory = new JsonResponseFactory(); $response = $factory->createResponse($code, $reasonPhrase); $this->assertSame($code, $response->getStatusCode()); $this->assertSame('application/json', $response->getHeaderLine('Content-Type')); } }