client->request('GET', '/api/food_orders'); $this->assertResponseIsSuccessful(); $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); $this->assertJsonContains([ '@context' => '/api/contexts/FoodOrder', '@id' => '/api/food_orders', '@type' => 'Collection', 'totalItems' => 1, ]); $array = $response->toArray(); expect($array['member'][0]['orderItems'])->toHaveCount(10); }); test('open orders', function (): void { $response = $this->client->request('GET', '/api/food_orders/open'); $this->assertResponseIsSuccessful(); $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); $this->assertJsonContains([ '@context' => '/api/contexts/FoodOrder', '@id' => '/api/food_orders/open', '@type' => 'Collection', ]); // Get the response content and verify that all returned orders are open $array = $response->toArray(); // If we have no items, we should still have a successful response if ($array['totalItems'] === 0) { return; } // For each order in the response, check that it is not closed foreach ($array['member'] as $order) { // An order is considered open if either: // 1. closedAt is null or // 2. closedAt is in the future $closedAt = isset($order['closedAt']) ? new DateTimeImmutable($order['closedAt']) : null; $now = new DateTimeImmutable; // Assert that the order is open (not closed) $isOpen = (! $closedAt instanceof DateTimeImmutable || $closedAt > $now); expect($isOpen) ->toBeTrue('Order should be open but is closed'); } });