extension = new TalksExtension(); } /** @test */ public function talks_given_multiple_times_are_only_returned_once() { $talkA = [ 'title' => 'Talk A', 'events' => [ ['event' => 'event_a', 'date' => (new DateTime('-1 days'))->format(TalksExtension::DATE_FORMAT)], ['event' => 'event_b', 'date' => (new DateTime('+1 days'))->format(TalksExtension::DATE_FORMAT)], ], ]; $talkB = [ 'title' => 'Talk B', 'events' => [ ['event' => 'event_a', 'date' => (new DateTime('-3 days'))->format(TalksExtension::DATE_FORMAT)], ], ]; $this->assertCount(2, $this->extension->getAll([$talkA, $talkB])); } /** @test */ public function talks_are_ordered_by_the_most_recent_event_date() { $talkA = [ 'title' => 'Talk A', 'events' => [ ['event' => 'event_a', 'date' => (new DateTime('-5 days'))->format(TalksExtension::DATE_FORMAT)], ], ]; $talkB = [ 'title' => 'Talk B', 'events' => [ ['event' => 'event_a', 'date' => (new DateTime('-20 days'))->format(TalksExtension::DATE_FORMAT)], ], ]; $talkC = [ 'title' => 'Talk C', 'events' => [ ['event' => 'event_a', 'date' => (new DateTime('-3 days'))->format(TalksExtension::DATE_FORMAT)], ['event' => 'event_b', 'date' => (new DateTime('-10 days'))->format(TalksExtension::DATE_FORMAT)], ], ]; $unorderedTalks = [$talkC, $talkA, $talkB]; $orderedTalks = $this->extension->getAll($unorderedTalks); $this->assertEquals([$talkC, $talkA, $talkB], $orderedTalks->toArray()); } /** @test */ public function only_past_events_can_be_retrieved() { $this->markTestIncomplete(); } /** @test */ public function only_future_events_can_be_retrieved() { $this->markTestIncomplete(); } }