visitsTracker = $this->prophesize(VisitsTrackerInterface::class); $command = new GetVisitsCommand($this->visitsTracker->reveal(), Translator::factory([])); $app = new Application(); $app->add($command); $this->commandTester = new CommandTester($command); } /** * @test */ public function noDateFlagsTriesToListWithoutDateRange() { $shortCode = 'abc123'; $this->visitsTracker->info($shortCode, new DateRange(null, null))->willReturn([]) ->shouldBeCalledTimes(1); $this->commandTester->execute([ 'command' => 'shortcode:visits', 'shortCode' => $shortCode, ]); } /** * @test */ public function providingDateFlagsTheListGetsFiltered() { $shortCode = 'abc123'; $startDate = '2016-01-01'; $endDate = '2016-02-01'; $this->visitsTracker->info($shortCode, new DateRange(new \DateTime($startDate), new \DateTime($endDate))) ->willReturn([]) ->shouldBeCalledTimes(1); $this->commandTester->execute([ 'command' => 'shortcode:visits', 'shortCode' => $shortCode, '--startDate' => $startDate, '--endDate' => $endDate, ]); } /** * @test */ public function outputIsProperlyGenerated() { $shortCode = 'abc123'; $this->visitsTracker->info($shortCode, Argument::any())->willReturn([ (new Visit())->setReferer('foo') ->setRemoteAddr('1.2.3.4') ->setUserAgent('bar'), ])->shouldBeCalledTimes(1); $this->commandTester->execute([ 'command' => 'shortcode:visits', 'shortCode' => $shortCode, ]); $output = $this->commandTester->getDisplay(); $this->assertTrue(strpos($output, 'foo') > 0); $this->assertTrue(strpos($output, '1.2.3.4') > 0); $this->assertTrue(strpos($output, 'bar') > 0); } }