Skip to content

Commit 0632200

Browse files
committed
Merge pull request #4 from chillu/pulls/skip-missing-dist-factory
Allow empty 'dist' in Result\Factory
2 parents 6b3abed + 9b96f93 commit 0632200

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"package":{"name":"sylius\/sylius","description":"Modern ecommerce for Symfony2","time":"2013-01-18T20:48:01+00:00","maintainers":[{"name":"pjedrzejewski","email":"pjedrzejewski@diweb.pl"}],"versions":{"dev-master":{"name":"sylius\/sylius","description":"Modern ecommerce for Symfony2","keywords":[],"homepage":"http:\/\/sylius.org","version":"dev-master","version_normalized":"9999999-dev","license":["MIT"],"authors":[{"name":"Pawe\u0142 J\u0119drzejewski","email":"pjedrzejewski@diweb.pl","homepage":"http:\/\/pjedrzejewski.com"},{"name":"Sylius project","homepage":"http:\/\/sylius.org"},{"name":"Community contributions","homepage":"http:\/\/github.com\/Sylius\/Sylius\/contributors"}],"source":{"type":"git","url":"https:\/\/github.com\/Sylius\/Sylius.git","reference":"1f0e49a6d4e9b6ab3a84cbd962f772c707461640"},"dist":null,"type":"library","time":"2013-03-17T12:27:32+00:00","autoload":{"psr-0":{"Context":"features\/"}},"extra":{"symfony-app-dir":"sylius","symfony-web-dir":"web"},"require":{"php":">=5.3.3","doctrine\/orm":">=2.2.3,<2.4-dev","doctrine\/doctrine-fixtures-bundle":"*","twig\/extensions":"1.0.*","symfony\/assetic-bundle":"2.1.*","sylius\/core-bundle":"0.1.*","sylius\/web-bundle":"0.1.*","symfony\/symfony":">=2.2,<2.3-dev","doctrine\/doctrine-bundle":"1.2.*","symfony\/swiftmailer-bundle":"2.2.*","symfony\/monolog-bundle":"2.2.*","sensio\/distribution-bundle":"2.2.*","mathiasverraes\/money":"dev-master@dev"},"require-dev":{"behat\/behat":"2.4.*","behat\/symfony2-extension":"*","behat\/mink-extension":"*","behat\/mink-browserkit-driver":"*","phpspec\/phpspec2":"dev-develop","behat\/mink-selenium2-driver":"*"}},"dev-checkout":{"name":"sylius\/sylius","description":"Modern ecommerce for Symfony2","keywords":[],"homepage":"","version":"dev-checkout","version_normalized":"dev-checkout","license":["MIT"],"authors":[{"name":"Pawe\u0142 J\u0119drzejewski","email":"pjedrzejewski@diweb.pl","homepage":"http:\/\/pjedrzejewski.com"},{"name":"Sylius project","homepage":"http:\/\/sylius.org"},{"name":"Community contributions","homepage":"http:\/\/github.com\/Sylius\/Sylius\/contributors"}],"source":{"type":"git","url":"https:\/\/github.com\/Sylius\/Sylius.git","reference":"cb0a489db41707d5df078f1f35e028e04ffd9e8e"},"dist":{"type":"zip","url":"https:\/\/api.github.com\/repos\/Sylius\/Sylius\/zipball\/cb0a489db41707d5df078f1f35e028e04ffd9e8e","reference":"cb0a489db41707d5df078f1f35e028e04ffd9e8e","shasum":""},"type":"library","time":"2013-03-01T22:22:37+00:00","autoload":{"psr-0":{"Context":"features\/"}},"extra":{"symfony-app-dir":"sylius","symfony-web-dir":"web"},"require":{"php":">=5.3.3","symfony\/symfony":">=2.2,<2.3-dev","doctrine\/orm":">=2.2.3,<2.4-dev","doctrine\/doctrine-bundle":"1.2.*","doctrine\/doctrine-fixtures-bundle":"*","twig\/extensions":"1.0.*","symfony\/assetic-bundle":"2.1.*","symfony\/swiftmailer-bundle":"2.2.*","symfony\/monolog-bundle":"2.2.*","sensio\/distribution-bundle":"2.2.*","sylius\/core-bundle":"0.1.*","sylius\/web-bundle":"0.1.*","mathiasverraes\/money":"dev-master@dev"},"require-dev":{"behat\/behat":"2.4.*","behat\/symfony2-extension":"*","behat\/mink-extension":"*","behat\/mink-browserkit-driver":"*","phpspec\/phpspec2":"dev-develop","behat\/mink-selenium2-driver":"*"}}},"type":"library","repository":"https:\/\/github.com\/Sylius\/Sylius.git","downloads":{"total":41,"monthly":30,"daily":0},"favers":0}}

spec/Packagist/Api/Result/Factory.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ function it_creates_package_names()
4848
));
4949
}
5050

51+
function it_creates_packages_with_missing_optional_data()
52+
{
53+
$data = json_decode(FixtureLoader::load('get_nodist.json'), true);
54+
55+
$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
56+
}
57+
5158
static public function getMatchers()
5259
{
5360
return array(

src/Packagist/Api/Result/Factory.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,26 @@ public function createPackageResults(array $package)
3333
{
3434
$created = array();
3535

36-
if (isset($package['maintainers'])) {
36+
if (isset($package['maintainers']) && $package['maintainers']) {
3737
foreach ($package['maintainers'] as $key => $maintainer) {
3838
$package['maintainers'][$key] = $this->createResult('Packagist\Api\Result\Package\Maintainer', $maintainer);
3939
}
4040
}
4141

42-
$package['downloads'] = $this->createResult('Packagist\Api\Result\Package\Downloads', $package['downloads']);
42+
if (isset($package['downloads']) && $package['downloads']) {
43+
$package['downloads'] = $this->createResult('Packagist\Api\Result\Package\Downloads', $package['downloads']);
44+
}
4345

4446
foreach ($package['versions'] as $branch => $version) {
45-
if (isset($version['authors'])) {
47+
if (isset($version['authors']) && $version['authors']) {
4648
foreach ($version['authors'] as $key => $author) {
4749
$version['authors'][$key] = $this->createResult('Packagist\Api\Result\Package\Author', $author);
4850
}
4951
}
5052
$version['source'] = $this->createResult('Packagist\Api\Result\Package\Source', $version['source']);
51-
$version['dist'] = $this->createResult('Packagist\Api\Result\Package\Dist', $version['dist']);
53+
if (isset($version['dist']) && $version['dist']) {
54+
$version['dist'] = $this->createResult('Packagist\Api\Result\Package\Dist', $version['dist']);
55+
}
5256

5357
$package['versions'][$branch] = $this->createResult('Packagist\Api\Result\Package\Version', $version);
5458
}

0 commit comments

Comments
 (0)