Last active
January 14, 2016 11:01
-
-
Save ahonymous/f711ebb4fcfbd834a947 to your computer and use it in GitHub Desktop.
Tests for form with entity type
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace AppBundle\Tests\Form; | |
use AppBundle\Entity\EOrder; | |
use AppBundle\Entity\User; | |
use AppBundle\Form\ApiOrderType; | |
use AppBundle\Tests\AppTypeTestCase; | |
class ApiOrderTypeTest extends AppTypeTestCase | |
{ | |
/** @dataProvider getData */ | |
public function testSubmitValidData($username, $formData) | |
{ | |
$user = new User(); | |
$user->setUsername($username); | |
$formData['name'] = $username; | |
$type = new ApiOrderType(); | |
$object = new EOrder(); | |
$object->setUser($user); | |
$form = $this->factory->create($type, $object); | |
$form->add('submit', 'submit'); | |
$form->submit($formData); | |
$this->checkType($form, $formData, $object); | |
} | |
public function getData() | |
{ | |
return [ | |
[ | |
'username' => 'Tester1', | |
'order' => [ | |
'delivery' => '2015-01-01 00:00:00', | |
'poNumber' => '905', | |
'iceCubes' => 0, | |
'crushedIce' => 0, | |
'carryPack' => 1, | |
'barBlocks' => 0, | |
'dryIceSlices10' => 0, | |
'dryIcePallets10' => 0, | |
'dryIceSlices5' => 0, | |
'dryIcePallets5' => 0, | |
'pushId' => 'pushId', | |
'provider' => 'android', | |
] | |
], | |
[ | |
'username' => 'Tester2', | |
'order' => [ | |
'delivery' => '2014-01-01 11:11:00', | |
'poNumber' => '8066', | |
'iceCubes' => 0, | |
'crushedIce' => 0, | |
'carryPack' => 1, | |
'barBlocks' => 1, | |
'dryIceSlices10' => 1, | |
'dryIcePallets10' => 1, | |
'dryIceSlices5' => 1, | |
'dryIcePallets5' => 1, | |
'pushId' => 'pushId2', | |
'provider' => 'android', | |
] | |
], | |
]; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace AppBundle\Tests; | |
use Symfony\Component\Form\Extension\Core\CoreExtension; | |
use Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension; | |
use Symfony\Component\Form\FormInterface; | |
use Symfony\Component\Form\Forms; | |
use Symfony\Component\Form\Test\TypeTestCase; | |
use Symfony\Component\Validator\ConstraintViolationList; | |
class AppTypeTestCase extends TypeTestCase | |
{ | |
protected function setUp() | |
{ | |
parent::setUp(); | |
$validator = $this->getMock('\Symfony\Component\Validator\Validator\ValidatorInterface'); | |
$validator->method('validate')->will($this->returnValue(new ConstraintViolationList())); | |
$formTypeExtension = new FormTypeValidatorExtension($validator); | |
$coreExtension = new CoreExtension(); | |
$this->factory = Forms::createFormFactoryBuilder() | |
->addExtensions($this->getExtensions()) | |
->addExtension($coreExtension) | |
->addTypeExtension($formTypeExtension) | |
->getFormFactory(); | |
} | |
protected function checkType(FormInterface $form, $formData, $object = null) | |
{ | |
$this->assertTrue($form->isSynchronized()); | |
if ($object) { | |
$this->assertEquals($object, $form->getData()); | |
} | |
$view = $form->createView(); | |
$children = $view->children; | |
foreach (array_keys($formData) as $key) { | |
$this->assertArrayHasKey($key, $children); | |
} | |
} | |
protected function createRegistryMock($name, $em) | |
{ | |
$registry = $this->getMock('Doctrine\Common\Persistence\ManagerRegistry'); | |
$registry->expects($this->any()) | |
->method('getManager') | |
->with($this->equalTo($name)) | |
->will($this->returnValue($em)); | |
return $registry; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace AppBundle\Tests\Form; | |
use Doctrine\ORM\Tools\SchemaTool; | |
use AppBundle\Entity\User; | |
use AppBundle\Form\FilterType; | |
use AppBundle\Tests\AppTypeTestCase; | |
use Symfony\Bridge\Doctrine\Form\DoctrineOrmExtension; | |
use Symfony\Bridge\Doctrine\Test\DoctrineTestHelper; | |
use Symfony\Component\Form\Extension\Core\CoreExtension; | |
class FilterTypeTest extends AppTypeTestCase | |
{ | |
const ENTITY_CLASS = 'AppBundle\Entity\User'; | |
/** | |
* @var \Doctrine\ORM\EntityManager | |
*/ | |
private $em; | |
protected function getExtensions() | |
{ | |
$manager = $this->getMock('Doctrine\Common\Persistence\ManagerRegistry'); | |
$manager->expects($this->any()) | |
->method('getManager') | |
->will($this->returnValue($this->em)); | |
$manager->expects($this->any()) | |
->method('getManagerForClass') | |
->will($this->returnValue($this->em)); | |
return [ | |
new CoreExtension(), | |
new DoctrineOrmExtension($manager), | |
]; | |
} | |
protected function setUp() | |
{ | |
$this->em = DoctrineTestHelper::createTestEntityManager(); | |
parent::setUp(); | |
$schemaTool = new SchemaTool($this->em); | |
$classes = array( | |
$this->em->getClassMetadata(self::ENTITY_CLASS), | |
); | |
try { | |
$schemaTool->dropSchema($classes); | |
} catch (\Exception $e) { | |
} | |
try { | |
$schemaTool->createSchema($classes); | |
} catch (\Exception $e) { | |
} | |
$user = new User(); | |
$user->setUsername('905'); | |
$user->setPoNumber(true); | |
$user->setTradingName('company905'); | |
$user->setContactName('Superman'); | |
$user->setAddressLine1('address, 905'); | |
$user->setCity('city'); | |
$user->setPostcode('123456'); | |
$user->setPhone(102314553); | |
$user->setPassword('$2y$12$xOmVCVBcpqyZj3kgCWV6rep11Kl4J6hmnsHhtS15NtUAxCmSX62IO'); | |
$user->setCreated(new \DateTime()); | |
$user->setUpdated(new \DateTime()); | |
$this->em->persist($user); | |
$this->em->flush(); | |
} | |
/** @dataProvider getFilterData */ | |
public function testSubmitValidData($formData) | |
{ | |
$type = new FilterType(); | |
$form = $this->factory->create($type); | |
$form->add('submit', 'submit'); | |
$form->submit($formData); | |
$this->checkType($form, $formData); | |
} | |
public function getFilterData() | |
{ | |
return [ | |
[['startDate' => '2015-01-20']], | |
[['endDate' => '2015-01-21']], | |
[['tradingName' => 'testCompany']], | |
[['startDate' => '2015-01-20', 'endDate' => '2015-01-21']], | |
[['startDate' => '2015-01-20', 'endDate' => '2015-01-21', 'tradingName' => 'testCompany']], | |
[['startDate' => '2015-01-20', 'tradingName' => 'testCompany']], | |
[['endDate' => '2015-01-21', 'tradingName' => 'testCompany']], | |
]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment