Skip to content

Commit

Permalink
Improve address factory and installation
Browse files Browse the repository at this point in the history
  • Loading branch information
loic425 committed Jun 13, 2023
1 parent 5f2441c commit 87196ff
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 13 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "akawakaweb/sylius-fixtures-plugin",
"type": "sylius-plugin",
"description": "Shop fixtures plugin for Sylius shops.",
"description": "Sylius fixtures plugin for Sylius shops.",
"keywords": [
"sylius",
"sylius-plugin"
Expand Down
8 changes: 8 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@
composer require --dev akawakaweb/sylius-fixtures-plugin
```

```php
// config/bundles.php
return [
// [...]
Akawakaweb\SyliusFixturesPlugin\Symfony\SyliusFixturesPlugin::class => ['dev' => true, 'test' => true, 'test_cached' => true],
];
```

```yaml
# config/services.yaml
services:
Expand Down
36 changes: 36 additions & 0 deletions src/Foundry/Factory/AddressFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@

namespace Akawakaweb\SyliusFixturesPlugin\Foundry\Factory;

use Akawakaweb\SyliusFixturesPlugin\Foundry\Factory\State\WithFirstNameTrait;
use Akawakaweb\SyliusFixturesPlugin\Foundry\Factory\State\WithLastNameTrait;
use Akawakaweb\SyliusFixturesPlugin\Foundry\Factory\State\WithPhoneNumberTrait;
use Sylius\Bundle\CoreBundle\Doctrine\ORM\AddressRepository;
use Sylius\Component\Core\Model\Address;
use Sylius\Component\Core\Model\AddressInterface;
Expand Down Expand Up @@ -41,12 +44,45 @@
final class AddressFactory extends AbstractModelFactory implements FactoryWithModelClassAwareInterface
{
use WithModelClassTrait;
use WithFirstNameTrait;
use WithLastNameTrait;
use WithPhoneNumberTrait;

public function withCompany(?string $company = null): self
{
return $this->addState(['company' => $company ?? self::faker()->company()]);
}

public function withStreet(string $street): self
{
return $this->addState(['street' => $street]);
}

public function withCity(string $city): self
{
return $this->addState(['city' => $city]);
}

public function withPostcode(string $postcode): self
{
return $this->addState(['postcode' => $postcode]);
}

public function withCountryCode(string $countryCode): self
{
return $this->addState(['countryCode' => $countryCode]);
}

public function withProvinceName(string $provinceName): self
{
return $this->addState(['provinceName' => $provinceName]);
}

public function withProvinceCode(string $provinceCode): self
{
return $this->addState(['provinceCode' => $provinceCode]);
}

protected static function getClass(): string
{
return self::$modelClass ?? Address::class;
Expand Down
4 changes: 2 additions & 2 deletions src/Foundry/Factory/State/WithPhoneNumberTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
*/
trait WithPhoneNumberTrait
{
public function withPhoneNumber(string $phoneNumber): self
public function withPhoneNumber(?string $phoneNumber = null): self
{
return $this->addState(['phoneNumber' => $phoneNumber]);
return $this->addState(['phoneNumber' => $phoneNumber ?? self::faker()->phoneNumber()]);
}
}
61 changes: 51 additions & 10 deletions tests/Foundry/Factory/AddressFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,84 +37,125 @@ public function it_creates_country_with_random_data(): void
$this->assertNotNull($address->getPostcode());
$this->assertNotNull($address->getCountryCode());
// $this->assertNotNull($address->getCustomer());
$this->assertNull($address->getProvinceCode());
}

/** @test */
public function it_creates_address_with_given_first_name(): void
{
$address = AddressFactory::createOne(['firstName' => 'Marty']);
$address = AddressFactory::new()->withFirstName('Marty')->create();

$this->assertEquals('Marty', $address->getFirstName());
}

/** @test */
public function it_creates_address_with_given_last_name(): void
{
$address = AddressFactory::createOne(['lastName' => 'McFly']);
$address = AddressFactory::new()->withLastName('McFly')->create();

$this->assertEquals('McFly', $address->getLastName());
}

/** @test */
public function it_has_no_phone_number_by_default(): void
{
$address = AddressFactory::new()->create();

$this->assertNull($address->getPhoneNumber());
}

/** @test */
public function it_creates_address_with_random_phone_number(): void
{
$address = AddressFactory::new()->withPhoneNumber()->create();

$this->assertNotNull($address->getPhoneNumber());
}

/** @test */
public function it_creates_address_with_given_phone_number(): void
{
$address = AddressFactory::createOne(['phoneNumber' => '1955-1985-2015']);
$address = AddressFactory::new()->withPhoneNumber('1955-1985-2015')->create();

$this->assertEquals('1955-1985-2015', $address->getPhoneNumber());
}

/** @test */
public function it_has_no_company_by_default(): void
{
$address = AddressFactory::new()->create();

$this->assertNull($address->getCompany());
}

/** @test */
public function it_creates_address_with_random_company(): void
{
$address = AddressFactory::new()->withCompany()->create();

$this->assertNotNull($address->getCompany());
}

/** @test */
public function it_creates_address_with_given_company(): void
{
$address = AddressFactory::createOne(['company' => 'Universal Pictures']);
$address = AddressFactory::new()->withCompany('Universal Pictures')->create();

$this->assertEquals('Universal Pictures', $address->getCompany());
}

/** @test */
public function it_creates_address_with_given_street(): void
{
$address = AddressFactory::createOne(['street' => '9303 Lyon Drive, Lyon Estates']);
$address = AddressFactory::new()->withStreet('9303 Lyon Drive, Lyon Estates')->create();

$this->assertEquals('9303 Lyon Drive, Lyon Estates', $address->getStreet());
}

/** @test */
public function it_creates_address_with_given_city(): void
{
$address = AddressFactory::createOne(['city' => 'Hill Valley']);
$address = AddressFactory::new()->withCity('Hill Valley')->create();

$this->assertEquals('Hill Valley', $address->getCity());
}

/** @test */
public function it_creates_address_with_given_post_code(): void
{
$address = AddressFactory::createOne(['postcode' => '95420']);
$address = AddressFactory::new()->withPostcode('95420')->create();

$this->assertEquals('95420', $address->getPostcode());
}

/** @test */
public function it_creates_address_with_given_country_code(): void
{
$address = AddressFactory::createOne(['countryCode' => 'US']);
$address = AddressFactory::new()->withCountryCode('US')->create();

$this->assertEquals('US', $address->getCountryCode());
}

/** @test */
public function it_creates_address_with_given_province_name(): void
{
$address = AddressFactory::createOne(['provinceName' => 'California']);
$address = AddressFactory::new()->withProvinceName('California')->create();

$this->assertEquals('California', $address->getProvinceName());
}

/** @test */
public function it_has_no_province_code_by_default(): void
{
$address = AddressFactory::new()->create();

$this->assertNull($address->getProvinceCode());
}

/** @test */
public function it_creates_address_with_given_province_code(): void
{
$address = AddressFactory::createOne(['provinceCode' => 'CA']);
$address = AddressFactory::new()->withProvinceCode('CA')->create();

$this->assertEquals('CA', $address->getProvinceCode());
}
Expand Down

0 comments on commit 87196ff

Please sign in to comment.