getMockBuilder('Psy\\VersionUpdater\\GitHubChecker') ->setMethods(['fetchLatestRelease']) ->getMock(); $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input); $checker->isLatest(); } /** * @dataProvider jsonResults * * @param bool $assertion * @param mixed $input */ public function testDataSetResults($assertion, $input) { $checker = $this->getMockBuilder('Psy\\VersionUpdater\\GitHubChecker') ->setMethods(['fetchLatestRelease']) ->getMock(); $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input); $this->assertSame($assertion, $checker->isLatest()); } /** * @return array */ public function jsonResults() { return [ [false, \json_decode('{"tag_name":"v9.0.0"}')], [true, \json_decode('{"tag_name":"v' . Shell::VERSION . '"}')], [true, \json_decode('{"tag_name":"v0.0.1"}')], [true, \json_decode('{"tag_name":"v0.4.1-alpha"}')], [true, \json_decode('{"tag_name":"v0.4.2-beta3"}')], [true, \json_decode('{"tag_name":"v0.0.1"}')], [true, \json_decode('{"tag_name":""}')], ]; } /** * @return array */ public function malformedResults() { return [ [null], [false], [true], [\json_decode('{"foo":"bar"}')], [\json_decode('{}')], [\json_decode('[]')], [[]], [\json_decode('{"tag_name":false"}')], [\json_decode('{"tag_name":true"}')], ]; } }