service = $this->getMockBuilder(FeedServiceV2::class) ->disableOriginalConstructor() ->getMock(); $this->consoleInput = $this->getMockBuilder(InputInterface::class)->getMock(); $this->consoleOutput = $this->getMockBuilder(OutputInterface::class)->getMock(); $this->command = new UpdateUser($this->service); } /** * Test a valid call will work */ public function testValid() { $this->consoleInput->expects($this->exactly(1)) ->method('getArgument') ->will($this->returnValueMap([ ['user-id', 'admin'], ])); $feed = $this->createMock(Feed::class); $feed->expects($this->exactly(1)) ->method('getUpdateErrorCount') ->willReturn(0); $feed->expects($this->exactly(0)) ->method('getLastUpdateError'); $this->service->expects($this->exactly(1)) ->method('findAllForUser') ->with('admin') ->willReturn([$feed]); $this->service->expects($this->exactly(1)) ->method('fetch') ->with($feed) ->willReturn($feed); $result = $this->command->run($this->consoleInput, $this->consoleOutput); $this->assertSame(0, $result); } /** * Test valid calls that fails on some updates */ public function testValidFeedError() { $this->consoleInput->expects($this->exactly(1)) ->method('getArgument') ->will($this->returnValueMap([ ['user-id', 'admin'], ])); $feed = $this->createMock(Feed::class); $feed->expects($this->exactly(1)) ->method('getUpdateErrorCount') ->willReturn(10); $feed->expects($this->exactly(1)) ->method('getLastUpdateError') ->willReturn('Problem'); $this->service->expects($this->exactly(1)) ->method('findAllForUser') ->with('admin') ->willReturn([$feed]); $this->service->expects($this->exactly(1)) ->method('fetch') ->with($feed) ->willReturn($feed); $this->consoleOutput->expects($this->exactly(1)) ->method('writeln') ->with('Problem'); $result = $this->command->run($this->consoleInput, $this->consoleOutput); $this->assertSame(255, $result); } /** * Test valid calls that fails completely */ public function testInValid() { $this->consoleInput->expects($this->exactly(1)) ->method('getArgument') ->will($this->returnValueMap([ ['user-id', 'admin'], ])); $feed = $this->createMock(Feed::class); $this->service->expects($this->exactly(1)) ->method('findAllForUser') ->with('admin') ->willReturn([$feed]); $this->service->expects($this->exactly(1)) ->method('fetch') ->with($feed) ->will($this->throwException(new ServiceNotFoundException(''))); $result = $this->command->run($this->consoleInput, $this->consoleOutput); $this->assertSame(1, $result); } }