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