public function fetchRepository($slug) { $repositoryUrl = sprintf('%s/%s.json', $this->apiUrl, $slug); $buildsUrl = sprintf('%s/%s/builds.json', $this->apiUrl, $slug); $repository = new Repository(); $repositoryArray = json_decode($this->browser->get($repositoryUrl)->getContent(), true); if (!$repositoryArray) { throw new \UnexpectedValueException(sprintf('Response is empty for url %s', $repositoryUrl)); } $repository->fromArray($repositoryArray); $buildCollection = new BuildCollection(json_decode($this->browser->get($buildsUrl)->getContent(), true)); $repository->setBuilds($buildCollection); return $repository; }
/** * @test */ public function shouldLoadDataFromArray() { $repository = new Repository(); $repository->fromArray(array('slug' => 'travis-ci/travis-ci', 'description' => 'travis ci project', 'last_build_id' => 61817, 'last_build_started_at' => '2011-08-01T14:50:07Z', 'last_build_status' => 0, 'last_build_number' => '721', 'last_build_duration' => '11', 'id' => 59, 'status' => 'stable', 'public_key' => 'MIGJAoGBALEXzQFoNltkT4PBHJiC+UXCcIfdJNvObnT2IspuDOAISNnUVRBaAAs=', 'last_build_finished_at' => '2011-08-01T14:56:44Z', 'builds' => array(array('id' => 111)))); $this->assertEquals(59, $repository->getId()); $this->assertEquals('travis-ci/travis-ci', $repository->getSlug()); $this->assertEquals(61817, $repository->getLastBuildId()); $this->assertEquals('2011-08-01 14:50:07', $repository->getLastBuildStartedAt()->format('Y-m-d H:i:s')); $this->assertEquals(0, $repository->getLastBuildStatus()); $this->assertEquals('721', $repository->getLastBuildNumber()); $this->assertEquals('11', $repository->getLastBuildDuration()); $this->assertEquals('stable', $repository->getStatus()); $this->assertEquals('2011-08-01 14:56:44', $repository->getLastBuildFinishedAt()->format('Y-m-d H:i:s')); $this->assertEquals(111, $repository->getBuilds()->first()->getId()); $this->assertEquals('travis ci project', $repository->getDescription()); $this->assertEquals('MIGJAoGBALEXzQFoNltkT4PBHJiC+UXCcIfdJNvObnT2IspuDOAISNnUVRBaAAs=', $repository->getPublicKey()); }