Meta-fields for InvoiceTemplate, structured Customer address (#5519)
This commit is contained in:
@@ -9,7 +9,11 @@
|
||||
|
||||
namespace App\Tests\Entity;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\CustomerMeta;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Entity\InvoiceTemplateMeta;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
@@ -35,59 +39,118 @@ class InvoiceTemplateTest extends TestCase
|
||||
self::assertEquals('default', $sut->getRenderer());
|
||||
self::assertEquals(30, $sut->getDueDays());
|
||||
self::assertTrue($sut->isDecimalDuration()); // @phpstan-ignore method.deprecated
|
||||
}
|
||||
|
||||
public function testSetNullForOptionalValues(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setPaymentDetails(null));
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setVatId(null));
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setContact(null));
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setAddress(null));
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setPaymentTerms(null));
|
||||
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
|
||||
self::assertEquals(0, $sut->getMetaFields()->count());
|
||||
self::assertNull($sut->getMetaField('foo'));
|
||||
}
|
||||
|
||||
public function testSetterAndGetter(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setPaymentTerms('foo bar'));
|
||||
$sut->setPaymentTerms('foo bar');
|
||||
self::assertEquals('foo bar', $sut->getPaymentTerms());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setPaymentDetails('iuasdzgf isdfhvlksdjfbnvl ksdfbglisbdf'));
|
||||
$sut->setPaymentDetails('iuasdzgf isdfhvlksdjfbnvl ksdfbglisbdf');
|
||||
self::assertEquals('iuasdzgf isdfhvlksdjfbnvl ksdfbglisbdf', $sut->getPaymentDetails());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setContact('hello world'));
|
||||
$sut->setContact('hello world');
|
||||
self::assertEquals('hello world', $sut->getContact());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setVat(7.31));
|
||||
$sut->setVat(7.31);
|
||||
self::assertEquals(7.31, $sut->getVat());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setVatId('1234567890'));
|
||||
$sut->setVatId('1234567890'); // @phpstan-ignore method.deprecated
|
||||
self::assertEquals('1234567890', $sut->getVatId());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setLanguage('de'));
|
||||
$sut->setLanguage('de');
|
||||
self::assertEquals('de', $sut->getLanguage());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setNumberGenerator('foo'));
|
||||
$sut->setNumberGenerator('foo');
|
||||
self::assertEquals('foo', $sut->getNumberGenerator());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setRenderer('bar'));
|
||||
$sut->setRenderer('bar');
|
||||
self::assertEquals('bar', $sut->getRenderer());
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setCalculator('fooBar'));
|
||||
$sut->setCalculator('fooBar');
|
||||
self::assertEquals('fooBar', $sut->getCalculator());
|
||||
|
||||
$sut->setCompany('looney toon'); // @phpstan-ignore method.deprecated
|
||||
self::assertEquals('looney toon', $sut->getCompany());
|
||||
|
||||
$sut->setAddress('acme street, 1234 looney town, rainbow'); // @phpstan-ignore method.deprecated
|
||||
self::assertEquals('acme street, 1234 looney town, rainbow', $sut->getAddress());
|
||||
|
||||
self::assertEquals($sut, clone $sut);
|
||||
|
||||
$customer = new Customer('foo');
|
||||
$customer->setVatId('0987654321');
|
||||
$customer->setCompany('bar');
|
||||
$customer->setAddressLine1('elmstreet');
|
||||
$customer->setAddressLine2('2nd floor');
|
||||
$customer->setPostCode('4711');
|
||||
$customer->setCity('Over the rainbow');
|
||||
$sut->setCustomer($customer);
|
||||
|
||||
self::assertEquals('elmstreet
|
||||
2nd floor
|
||||
4711 Over the rainbow', $sut->getAddress());
|
||||
self::assertEquals('bar', $sut->getCompany());
|
||||
self::assertEquals('0987654321', $sut->getVatId());
|
||||
}
|
||||
|
||||
public function testToString(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setName('a template name'));
|
||||
$sut->setName('a template name');
|
||||
self::assertEquals('a template name', $sut->__toString());
|
||||
self::assertEquals('a template name', (string) $sut);
|
||||
}
|
||||
|
||||
public function testMetaFields(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
$meta = new InvoiceTemplateMeta();
|
||||
$meta->setName('foo')->setValue('bar2')->setType('test');
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setMetaField($meta));
|
||||
self::assertEquals(1, $sut->getMetaFields()->count());
|
||||
$result = $sut->getMetaField('foo');
|
||||
self::assertSame($result, $meta);
|
||||
self::assertEquals('test', $result->getType());
|
||||
self::assertEquals('bar2', $result->getValue());
|
||||
|
||||
$meta2 = new InvoiceTemplateMeta();
|
||||
$meta2->setName('foo')->setValue('bar')->setType('test2');
|
||||
self::assertInstanceOf(InvoiceTemplate::class, $sut->setMetaField($meta2));
|
||||
self::assertEquals(1, $sut->getMetaFields()->count());
|
||||
self::assertCount(0, $sut->getVisibleMetaFields());
|
||||
|
||||
$result = $sut->getMetaField('foo');
|
||||
self::assertSame($result, $meta);
|
||||
self::assertEquals('test2', $result->getType());
|
||||
|
||||
$sut->setMetaField((new InvoiceTemplateMeta())->setName('blub')->setIsVisible(true));
|
||||
$sut->setMetaField((new InvoiceTemplateMeta())->setName('blab')->setIsVisible(true));
|
||||
self::assertEquals(3, $sut->getMetaFields()->count());
|
||||
self::assertCount(2, $sut->getVisibleMetaFields());
|
||||
}
|
||||
|
||||
public function testThrowsOnMetaFieldWithoutName(): void
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Meta-field needs to have a name');
|
||||
$sut = new InvoiceTemplate();
|
||||
$sut->setMetaField(new CustomerMeta());
|
||||
}
|
||||
|
||||
public function testThrowsOnMetaFieldsWrongType(): void
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Meta-field needs to be an instanceof InvoiceTemplateMeta');
|
||||
$sut = new InvoiceTemplate();
|
||||
$meta = new CustomerMeta();
|
||||
$meta->setName('foo');
|
||||
$sut->setMetaField($meta);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user