controller = new EventController(new EventRepository(Database::inMemory())); } public function testCreateRejectsMissingFields(): void { $response = $this->controller->create(Request::create('POST', '/api/v1/events', body: ['name' => 'X'])); self::assertSame(422, $response->status); } public function testCreateRejectsInvalidSeverity(): void { $response = $this->controller->create(Request::create('POST', '/api/v1/events', body: [ 'name' => 'X', 'message' => 'Y', 'severity' => 'info', ])); self::assertSame(422, $response->status); } public function testCreateReturns201(): void { $response = $this->controller->create(Request::create('POST', '/api/v1/events', body: [ 'name' => 'Ping', 'message' => 'down', 'severity' => 'error', ])); self::assertSame(201, $response->status); self::assertSame('error', $response->body()['event']['severity']); } public function testIndexReturnsEvents(): void { $this->controller->create(Request::create('POST', '/api/v1/events', body: [ 'name' => 'Ping', 'message' => 'down', 'severity' => 'error', ])); $response = $this->controller->index(Request::create('GET', '/api/v1/events')); self::assertCount(1, $response->body()['events']); } }