Skip to content

Commit

Permalink
Update specs to use short array syntax and public function visibility
Browse files Browse the repository at this point in the history
  • Loading branch information
robbieaverill committed Dec 1, 2020
1 parent dc5089e commit 9610cc3
Show file tree
Hide file tree
Showing 10 changed files with 246 additions and 203 deletions.
75 changes: 45 additions & 30 deletions spec/Packagist/Api/ClientSpec.php
Original file line number Diff line number Diff line change
@@ -1,40 +1,41 @@
<?php

namespace spec\Packagist\Api;

use PhpSpec\ObjectBehavior;
use PhpSpec\Exception\Example\MatcherException;
declare(strict_types=1);

use Packagist\Api\Client;
use Packagist\Api\Result\Factory;
namespace spec\Packagist\Api;

use GuzzleHttp\Client as HttpClient;
use GuzzleHttp\Psr7\Response;
use Packagist\Api\Client;
use Packagist\Api\Result\Factory;
use PhpSpec\ObjectBehavior;

class ClientSpec extends ObjectBehavior
{
function let(HttpClient $client, Factory $factory)
public function let(HttpClient $client, Factory $factory)
{
$this->beConstructedWith($client, $factory);
}

function it_is_initializable()
public function it_is_initializable()
{
$this->shouldHaveType('Packagist\Api\Client');
$this->shouldHaveType(Client::class);
}

function it_search_for_packages(HttpClient $client, Factory $factory, Response $response)
public function it_search_for_packages(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/search.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/search.json?q=sylius')->shouldBeCalled()->willReturn($response);
$factory->create(json_decode($data, true))->shouldBeCalled()->willReturn(array());
$client->request('GET', 'https://packagist.org/search.json?q=sylius')
->shouldBeCalled()
->willReturn($response);
$factory->create(json_decode($data, true))->shouldBeCalled()->willReturn([]);

$this->search('sylius');
}

function it_search_for_packages_with_limit(HttpClient $client, Factory $factory, Response $response)
public function it_search_for_packages_with_limit(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/search.json');
$response->getBody()->shouldBeCalled()->willReturn($data);
Expand All @@ -45,75 +46,89 @@ function it_search_for_packages_with_limit(HttpClient $client, Factory $factory,
$this->search('sylius', [], 2);
}

function it_searches_for_packages_with_filters(HttpClient $client, Factory $factory, Response $response)
public function it_searches_for_packages_with_filters(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/search.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/search.json?tag=storage&q=sylius')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/search.json?tag=storage&q=sylius')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled()->willReturn(array());
$factory->create(json_decode($data, true))->shouldBeCalled()->willReturn([]);

$this->search('sylius', array('tag' => 'storage'));
$this->search('sylius', ['tag' => 'storage']);
}

function it_gets_popular_packages(HttpClient $client, Factory $factory, Response $response)
public function it_gets_popular_packages(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/popular.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/explore/popular.json?page=1')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/explore/popular.json?page=1')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled()->willReturn(array_pad(array(), 5, null));
$factory->create(json_decode($data, true))
->shouldBeCalled()
->willReturn(array_pad([], 5, null));

$this->popular(2)->shouldHaveCount(2);
}

function it_gets_package_details(HttpClient $client, Factory $factory, Response $response)
public function it_gets_package_details(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/get.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/packages/sylius/sylius.json')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/packages/sylius/sylius.json')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled();

$this->get('sylius/sylius');
}

function it_lists_all_package_names(HttpClient $client, Factory $factory, Response $response)
public function it_lists_all_package_names(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/all.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/packages/list.json')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/packages/list.json')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled();

$this->all();
}

function it_filters_package_names_by_type(HttpClient $client, Factory $factory, Response $response)
public function it_filters_package_names_by_type(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/all.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/packages/list.json?type=library')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/packages/list.json?type=library')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled();

$this->all(array('type' => 'library'));
$this->all(['type' => 'library']);
}

function it_filters_package_names_by_vendor(HttpClient $client, Factory $factory, Response $response)
public function it_filters_package_names_by_vendor(HttpClient $client, Factory $factory, Response $response)
{
$data = file_get_contents('spec/Packagist/Api/Fixture/all.json');
$response->getBody()->shouldBeCalled()->willReturn($data);

$client->request('GET', 'https://packagist.org/packages/list.json?vendor=sylius')->shouldBeCalled()->willReturn($response);
$client->request('GET', 'https://packagist.org/packages/list.json?vendor=sylius')
->shouldBeCalled()
->willReturn($response);

$factory->create(json_decode($data, true))->shouldBeCalled();

$this->all(array('vendor' => 'sylius'));
$this->all(['vendor' => 'sylius']);
}
}
49 changes: 27 additions & 22 deletions spec/Packagist/Api/Result/FactorySpec.php
Original file line number Diff line number Diff line change
@@ -1,89 +1,94 @@
<?php

declare(strict_types=1);

namespace spec\Packagist\Api\Result;

use Packagist\Api\Result\Factory;
use Packagist\Api\Result\Package;
use Packagist\Api\Result\Result;
use PhpSpec\ObjectBehavior;

class FactorySpec extends ObjectBehavior
{
function it_is_initializable()
public function it_is_initializable()
{
$this->shouldHaveType('Packagist\Api\Result\Factory');
$this->shouldHaveType(Factory::class);
}

function it_creates_search_results()
public function it_creates_search_results()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/search.json'), true);

$results = $this->create($data);
$results->shouldHaveCount(2);
$results->shouldBeArray();
foreach ($results as $result) {
$result->shouldBeAnInstanceOf('Packagist\Api\Result\Result');
$result->shouldBeAnInstanceOf(Result::class);
}
}

function it_creates_popular_results()
public function it_creates_popular_results()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/popular.json'), true);

$results = $this->create($data);
$results->shouldHaveCount(2);
$results->shouldBeArray();
foreach ($results as $result) {
$result->shouldBeAnInstanceOf('Packagist\Api\Result\Result');
$result->shouldBeAnInstanceOf(Result::class);
}
}

function it_creates_packages()
public function it_creates_packages()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get.json'), true);

$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

function it_creates_package_names()
public function it_creates_package_names()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/all.json'), true);

$this->create($data)->shouldReturn(array(
$this->create($data)->shouldReturn([
'sylius/addressing-bundle',
'sylius/assortment-bundle',
'sylius/blogger-bundle'
));
'sylius/blogger-bundle',
]);
}

function it_creates_packages_with_missing_optional_data()
public function it_creates_packages_with_missing_optional_data()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get_nodist.json'), true);

$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

function it_creates_abandoned_packages()
public function it_creates_abandoned_packages()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get_abandoned.json'), true);

$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

function it_creates_packages_with_suggesters()
public function it_creates_packages_with_suggesters()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get_suggesters.json'), true);
$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

function it_creates_packages_with_dependents()
public function it_creates_packages_with_dependents()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get_dependents.json'), true);
$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

function it_creates_packages_with_null_source()
public function it_creates_packages_with_null_source()
{
$data = json_decode(file_get_contents('spec/Packagist/Api/Fixture/get_null_source.json'), true);

$this->create($data)->shouldHaveType('Packagist\Api\Result\Package');
$this->create($data)->shouldHaveType(Package::class);
}

public function getMatchers(): array
Expand Down
23 changes: 13 additions & 10 deletions spec/Packagist/Api/Result/Package/AuthorSpec.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,45 @@
<?php

declare(strict_types=1);

namespace spec\Packagist\Api\Result\Package;

use Packagist\Api\Result\Package\Author;
use PhpSpec\ObjectBehavior;

class AuthorSpec extends ObjectBehavior
{
function let()
public function let()
{
$this->fromArray(array(
$this->fromArray([
'name' => 'Saša Stamenković',
'email' => 'umpirsky@gmail.com',
'homepage' => 'umpirsky.com',
'role' => 'lead'
));
'role' => 'lead',
]);
}

function it_is_initializable()
public function it_is_initializable()
{
$this->shouldHaveType('Packagist\Api\Result\Package\Author');
$this->shouldHaveType(Author::class);
}

function it_gets_name()
public function it_gets_name()
{
$this->getName()->shouldReturn('Saša Stamenković');
}

function it_gets_email()
public function it_gets_email()
{
$this->getEmail()->shouldReturn('umpirsky@gmail.com');
}

function it_gets_homepage()
public function it_gets_homepage()
{
$this->getHomepage()->shouldReturn('umpirsky.com');
}

function it_gets_role()
public function it_gets_role()
{
$this->getRole()->shouldReturn('lead');
}
Expand Down
21 changes: 12 additions & 9 deletions spec/Packagist/Api/Result/Package/DistSpec.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,45 @@
<?php

declare(strict_types=1);

namespace spec\Packagist\Api\Result\Package;

use Packagist\Api\Result\Package\Dist;
use PhpSpec\ObjectBehavior;

class DistSpec extends ObjectBehavior
{
function let()
public function let()
{
$this->fromArray(array(
$this->fromArray([
'type' => 'git',
'url' => 'https://github.com/Sylius/Sylius.git',
'reference' => 'cb0a489db41707d5df078f1f35e028e04ffd9e8e',
'shasum' => 'cb0a489db41707d5df078f1f35e028e04ffd9e8e',
));
]);
}

function it_is_initializable()
public function it_is_initializable()
{
$this->shouldHaveType('Packagist\Api\Result\Package\Dist');
$this->shouldHaveType(Dist::class);
}

function it_gets_type()
public function it_gets_type()
{
$this->getType()->shouldReturn('git');
}

function it_gets_url()
public function it_gets_url()
{
$this->getUrl()->shouldReturn('https://github.com/Sylius/Sylius.git');
}

function it_gets_reference()
public function it_gets_reference()
{
$this->getReference()->shouldReturn('cb0a489db41707d5df078f1f35e028e04ffd9e8e');
}

function it_gets_shasum()
public function it_gets_shasum()
{
$this->getShasum()->shouldReturn('cb0a489db41707d5df078f1f35e028e04ffd9e8e');
}
Expand Down
Loading

0 comments on commit 9610cc3

Please sign in to comment.