public function testSubmit() { $choice = new \stdClass(); $choice->{$identifierPath = 'id'} = $id = 1; $choice->{$labelPath = 'label'} = $label = 'label'; $this->resource->expects($this->once())->method('getModel')->will($this->returnValue($model = get_class($choice))); $this->resource->expects($this->once())->method('getIdPropertyPath')->will($this->returnValue($identifierPath)); $this->resource->expects($this->once())->method('getLabelPropertyPath')->will($this->returnValue($labelPath)); $this->managerRegistry->expects($this->once())->method('getManagerForClass')->with($this->identicalTo($model))->will($this->returnValue($entityManager = $this->createEntityManagerMock())); $entityManager->expects($this->once())->method('getRepository')->with($this->identicalTo($model))->will($this->returnValue($repository = $this->createRepositoryMock())); $entityManager->expects($this->exactly(3))->method('getClassMetadata')->with($this->identicalTo($model))->will($this->returnValue($classMetadata = $this->createClassMetadataMock())); $classMetadata->expects($this->once())->method('getName')->will($this->returnValue($model)); $classMetadata->expects($this->once())->method('getIdentifierFieldNames')->will($this->returnValue([$identifier = $identifierPath])); $classMetadata->expects($this->exactly(2))->method('getTypeOfField')->with($this->identicalTo($identifier))->will($this->returnValue('integer')); $repository->expects($this->once())->method('createQueryBuilder')->will($this->returnValue($queryBuilder = $this->createQueryBuilderMock($entityManager))); $queryBuilder->expects($this->exactly(2))->method('getQuery')->will($this->returnValue($query = $this->createQueryMock())); $query->expects($this->once())->method('execute')->will($this->returnValue($choices = [$choice])); $queryBuilder->expects($this->once())->method('getRootAliases')->will($this->returnValue([$rootAlias = 'root_alias'])); $queryBuilder->expects($this->once())->method('expr')->will($this->returnValue($expr = $this->createExprMock())); $queryBuilder->expects($this->once())->method('getEntityManager')->will($this->returnValue($entityManager)); $queryBuilder->expects($this->once())->method('getRootEntities')->will($this->returnValue([$model])); $expr->expects($this->once())->method('in')->with($this->identicalTo($rootAlias . '.' . $identifier), $this->identicalTo(':' . ($parameter = 'ORMQueryBuilderLoader_getEntitiesByIds_' . $identifier)))->will($this->returnValue($where = 'where')); $queryBuilder->expects($this->once())->method('andWhere')->with($this->identicalTo($where))->will($this->returnSelf()); $query->expects($this->once())->method('setParameter')->with($this->identicalTo($parameter), $this->identicalTo([(string) $id]), $this->identicalTo(Connection::PARAM_INT_ARRAY))->will($this->returnSelf()); $query->expects($this->once())->method('getResult')->will($this->returnValue([$choice])); $entityManager->expects($this->exactly(2))->method('contains')->with($this->identicalTo($choice))->will($this->returnValue(true)); $classMetadata->expects($this->exactly(2))->method('getIdentifierValues')->with($this->identicalTo($choice))->will($this->returnValue([$id])); $form = $this->factory->create(ResourceChoiceType::class, null, ['resource' => $this->resource])->submit($id); $this->assertSame($this->resource, $form->getConfig()->getOption('resource')); $this->assertSame($identifierPath, $form->getConfig()->getOption('choice_value')); $this->assertSame($labelPath, $form->getConfig()->getOption('choice_label')); $this->assertSame('', $form->getConfig()->getOption('placeholder')); $this->assertSame($choice, $form->getData()); $form->createView(); }
public function testSubmit() { $choice = new \stdClass(); $choice->{$identifierPath = 'id'} = $id = 1; $choice->{$labelPath = 'label'} = $label = 'label'; $this->resource->expects($this->once())->method('getModel')->will($this->returnValue($model = get_class($choice))); $this->resource->expects($this->once())->method('getIdPropertyPath')->will($this->returnValue($identifierPath)); $this->resource->expects($this->once())->method('getLabelPropertyPath')->will($this->returnValue($labelPath)); $this->managerRegistry->expects($this->once())->method('getManagerForClass')->with($this->identicalTo($model))->will($this->returnValue($documentManager = $this->createDocumentManagerMock())); $documentManager->expects($this->once())->method('getRepository')->with($this->identicalTo($model))->will($this->returnValue($repository = $this->createRepositoryMock())); $documentManager->expects($this->exactly(2))->method('getClassMetadata')->with($this->identicalTo($model))->will($this->returnValue($classMetadata = $this->createClassMetadataMock())); $classMetadata->expects($this->once())->method('getName')->will($this->returnValue($model)); $classMetadata->expects($this->once())->method('getIdentifierFieldNames')->will($this->returnValue([$identifier = $identifierPath])); $classMetadata->expects($this->once())->method('getTypeOfField')->with($this->identicalTo($identifier))->will($this->returnValue('integer')); $repository->expects($this->once())->method('createQueryBuilder')->will($this->returnValue($queryBuilder = $this->createQueryBuilderMock($documentManager))); $queryBuilder->expects($this->once())->method('getQuery')->will($this->returnValue($query = $this->createQueryMock())); $query->expects($this->once())->method('execute')->will($this->returnValue($iterator = $this->createIteratorMock())); $iterator->expects($this->once())->method('toArray')->will($this->returnValue([$choice])); $form = $this->factory->create(ResourceChoiceType::class, null, ['resource' => $this->resource])->submit($id); $this->assertSame($this->resource, $form->getConfig()->getOption('resource')); $this->assertSame($identifierPath, $form->getConfig()->getOption('choice_value')); $this->assertSame($labelPath, $form->getConfig()->getOption('choice_label')); $this->assertSame('', $form->getConfig()->getOption('placeholder')); $this->assertSame($choice, $form->getData()); $form->createView(); }
public function testSubmit() { $this->translatableResource->expects($this->once())->method('getModel')->will($this->returnValue(TranslatableTest::class)); $this->translatableResource->expects($this->once())->method('getRelation')->with($this->identicalTo('translation'))->will($this->returnValue($translationResource = $this->createResourceMock())); $translationResource->expects($this->once())->method('getForm')->will($this->returnValue(TranslationTestType::class)); $this->translatableFactory->expects($this->once())->method('create')->will($this->returnValue(new TranslatableTest())); $form = $this->formFactory->create(TranslatableTestType::class)->submit(['translations' => ['en' => ['value' => 'value-en'], 'fr' => ['value' => 'value-fr']]]); $translatable = $form->getData(); $view = $form->createView(); $this->assertInstanceOf(TranslatableTest::class, $translatable); $this->assertCount(1, $view->children); $this->assertArrayHasKey('translations', $view->children); $this->assertCount(2, $translatable->getTranslations()); $this->assertTrue($translatable->getTranslations()->containsKey('en')); $this->assertTrue($translatable->getTranslations()->containsKey('fr')); $this->assertCount(2, $view->children['translations']); $this->assertArrayHasKey('en', $view->children['translations']); $this->assertArrayHasKey('fr', $view->children['translations']); $this->assertInstanceOf(TranslationTest::class, $translatable->getTranslations()['en']); $this->assertSame('value-en', $translatable->getTranslations()['en']->getValue()); $this->assertCount(1, $view->children['translations']['en']); $this->assertArrayHasKey('value', $view->children['translations']['en']); $this->assertInstanceOf(TranslationTest::class, $translatable->getTranslations()['fr']); $this->assertSame('value-fr', $translatable->getTranslations()['fr']->getValue()); $this->assertCount(1, $view->children['translations']['fr']); $this->assertArrayHasKey('value', $view->children['translations']['fr']); }
public function testCreateWithoutOptions() { $this->resource->expects($this->once())->method('getModel')->will($this->returnValue($model = Fixture::class)); $fixture = $this->factory->create(); $this->assertInstanceOf($model, $fixture); $this->assertNull($fixture->getName()); }
/** * {@inheritdoc} */ protected function setUp() { $this->resource = $this->createResourceMock(); $this->resourceFactory = $this->createFactoryMock(); $this->resource->expects($this->any())->method('getName')->will($this->returnValue('model')); $this->resourceType = $this->getMockBuilder(AbstractResourceType::class)->setConstructorArgs([$this->resource, $this->resourceFactory])->getMockForAbstractClass(); $this->formFactory = Forms::createFormFactoryBuilder()->addType(new ResourceType())->addType($this->resourceType)->getFormFactory(); }
public function testCreateWithoutOptions() { $this->resource->expects($this->once())->method('getModel')->will($this->returnValue($translatableClass = TranslatableTest::class)); $this->localeContext->expects($this->once())->method('getLocales')->will($this->returnValue($locales = ['fr', 'es'])); $this->localeContext->expects($this->once())->method('getFallbackLocale')->will($this->returnValue($fallbackLocale = 'en')); $translatable = $this->factory->create(); $this->assertInstanceOf($translatableClass, $translatable); $this->assertSame($locales, $translatable->getLocales()); $this->assertSame($fallbackLocale, $translatable->getFallbackLocale()); $this->assertSame($this->translationFactory, $translatable->getTranslationFactory()); }
/** * @param mixed $value * @param string|null $alias * @param string|null $indexBy * * @return \PHPUnit_Framework_MockObject_MockObject|QueryBuilder */ private function setUpQueryBuilder($value = false, $alias = null, $indexBy = null) { if ($alias === null) { $this->resource->expects($this->once())->method('getName')->will($this->returnValue($resource = 'resource')); } else { $resource = $alias; } $this->entityManager->expects($this->once())->method('createQueryBuilder')->will($this->returnValue($queryBuilder = $this->createQueryBuilderMock())); $queryBuilder->expects($this->once())->method('select')->with($this->identicalTo($resource))->will($this->returnSelf()); $queryBuilder->expects($this->once())->method('from')->with($this->identicalTo($this->class), $this->identicalTo($resource), $this->identicalTo($indexBy))->will($this->returnSelf()); $queryBuilder->expects($this->any())->method('getRootAliases')->will($this->returnValue([$resource])); if ($value === false) { return $queryBuilder; } $queryBuilder->expects($this->once())->method('expr')->will($this->returnValue($expr = $this->createExprMock())); if ($value === null) { $expr->expects($this->once())->method('isNull')->with($this->identicalTo($resource . '.' . ($property = 'foo')))->will($this->returnValue($expression = 'expression')); } else { $expr->expects($this->once())->method(is_string($value) ? 'eq' : 'in')->with($this->identicalTo($resource . '.' . ($property = 'foo')), $this->matchesRegularExpression('/:' . $resource . '_' . $property . '_[a-z0-9]{22}/'))->will($this->returnValue($expression = 'expression')); $queryBuilder->expects($this->once())->method('setParameter')->with($this->matchesRegularExpression('/' . $resource . '_' . $property . '_[a-z0-9]{22}/'), $this->identicalTo($value))->will($this->returnSelf()); } $queryBuilder->expects($this->once())->method('andWhere')->with($this->identicalTo($expression))->will($this->returnSelf()); $queryBuilder->expects($this->once())->method('addOrderBy')->with($this->identicalTo($resource . '.' . ($order = 'baz')), $this->identicalTo($sort = 'ASC'))->will($this->returnSelf()); return $queryBuilder; }
public function testFindOneBy() { $this->classMetadata->expects($this->once())->method('getFieldNames')->will($this->returnValue([$translatableField = 'translatable_field', $bothField = 'both_field'])); $this->classMetadata->expects($this->once())->method('getAssociationMapping')->with($this->identicalTo('translations'))->will($this->returnValue(['targetEntity' => $translationClass = TranslationTest::class])); $translationClassMetadata = $this->createClassMetadataMock(); $translationClassMetadata->expects($this->once())->method('getFieldNames')->will($this->returnValue([$translationField = 'translation_field', $bothField])); $this->entityManager->expects($this->once())->method('getClassMetadata')->with($this->identicalTo($translationClass))->will($this->returnValue($translationClassMetadata)); $this->resource->expects($this->once())->method('getName')->will($this->returnValue($name = 'resource')); $this->entityManager->expects($this->once())->method('createQueryBuilder')->will($this->returnValue($queryBuilder = $this->createQueryBuilderMock())); $queryBuilder->expects($this->once())->method('select')->with($this->identicalTo($name))->will($this->returnSelf()); $queryBuilder->expects($this->once())->method('from')->with($this->identicalTo($this->class), $this->identicalTo($name), $this->isNull())->will($this->returnSelf()); $queryBuilder->expects($this->once())->method('addSelect')->with($this->identicalTo('resource_translation'))->will($this->returnSelf()); $queryBuilder->expects($this->exactly(5))->method('getRootAliases')->will($this->returnValue([$name])); $queryBuilder->expects($this->once())->method('leftJoin')->with($this->identicalTo($name . '.translations'), $this->identicalTo($translation = 'resource_translation'), $this->isNull(), $this->isNull(), $this->isNull())->will($this->returnSelf()); $queryBuilder->expects($this->exactly(3))->method('expr')->will($this->returnValue($expr = $this->createExprMock())); $expr->expects($this->at(0))->method('eq')->with($this->identicalTo($name . '.' . $translatableField), $this->matchesRegularExpression('/:' . $name . '_' . $translatableField . '_[a-z0-9]{22}/'))->will($this->returnValue($translatableWhere = 'translatable_where')); $expr->expects($this->at(1))->method('eq')->with($this->identicalTo($translation . '.' . $translationField), $this->matchesRegularExpression('/:' . $translation . '_' . $translationField . '_[a-z0-9]{22}/'))->will($this->returnValue($translationWhere = 'translation_where')); $expr->expects($this->at(2))->method('eq')->with($this->identicalTo($name . '.' . $bothField), $this->matchesRegularExpression('/:' . $name . '_' . $bothField . '_[a-z0-9]{22}/'))->will($this->returnValue($bothWhere = 'both_where')); $queryBuilder->expects($this->exactly(3))->method('andWhere')->will($this->returnValueMap([[$translatableWhere, $queryBuilder], [$translationWhere, $queryBuilder], [$bothWhere, $queryBuilder]])); $queryBuilder->expects($this->at(9))->method('setParameter')->with($this->matchesRegularExpression('/' . $name . '_' . $translatableField . '_[a-z0-9]{22}/'), $this->identicalTo($translatableValue = 'translatable_value'), $this->isNull())->will($this->returnSelf()); $queryBuilder->expects($this->at(13))->method('setParameter')->with($this->matchesRegularExpression('/' . $translation . '_' . $translationField . '_[a-z0-9]{22}/'), $this->identicalTo($translationValue = 'translation_value'), $this->isNull())->will($this->returnSelf()); $queryBuilder->expects($this->at(17))->method('setParameter')->with($this->matchesRegularExpression('/' . $name . '_' . $bothField . '_[a-z0-9]{22}/'), $this->identicalTo($bothValue = 'both_value'), $this->isNull())->will($this->returnSelf()); $queryBuilder->expects($this->once())->method('getQuery')->will($this->returnValue($query = $this->createQueryMock())); $query->expects($this->once())->method('getOneOrNullResult')->will($this->returnValue($result = 'result')); $this->assertSame($result, $this->translatableRepository->findOneBy([$translatableField => $translatableValue, $translationField => $translationValue, $bothField => $bothValue])); }
public function testFlushByPassException() { $this->resource->expects($this->exactly(2))->method('getName')->will($this->returnValue($name = 'name')); $this->objectManager->expects($this->once())->method('flush')->will($this->throwException(new \Exception())); $this->eventDispatcher->expects($this->at(0))->method('dispatch')->with($this->identicalTo('lug.' . $name . '.pre_' . ($action = 'flush')), $this->callback(function (DomainEvent $event) use($action) { return $event->getResource() === $this->resource && $event->getObject() === null && $event->getAction() === $action; })); $this->eventDispatcher->expects($this->at(1))->method('dispatch')->with($this->identicalTo('lug.' . $name . '.error_' . $action), $this->callback(function (DomainEvent $event) use($action) { $result = $event->getResource() === $this->resource && $event->getObject() === null && $event->getAction() === $action; $event->setStopped(false); return $result; })); $this->domainManager->flush(); }
public function testSubmitDefaultLocale() { $this->localeProvider->expects($this->once())->method('getDefaultLocale')->will($this->returnValue($defaultLocale = $this->createLocaleMock())); $defaultLocale->expects($this->exactly(2))->method('getCode')->will($this->returnValue($defaultLocaleCode = 'fr')); $defaultLocale->expects($this->never())->method('setCode'); $defaultLocale->expects($this->never())->method('setEnabled'); $defaultLocale->expects($this->never())->method('setRequired'); $this->resource->expects($this->once())->method('getModel')->will($this->returnValue(get_class($defaultLocale))); $this->repository->expects($this->once())->method('findAll')->will($this->returnValue([$defaultLocale])); $form = $this->formFactory->create(LocaleType::class, $defaultLocale)->submit(['code' => 'USD', 'enabled' => false, 'required' => false]); $view = $form->createView(); $this->assertCount(4, $view->children); $this->assertArrayHasKey('code', $view->children); $this->assertArrayHasKey('enabled', $view->children); $this->assertArrayHasKey('required', $view->children); $this->assertArrayHasKey('submit', $view->children); $this->assertArrayHasKey('disabled', $view->children['code']->vars); $this->assertTrue($view->children['code']->vars['disabled']); $this->assertArrayHasKey('disabled', $view->children['enabled']->vars); $this->assertTrue($view->children['enabled']->vars['disabled']); $this->assertArrayHasKey('disabled', $view->children['required']->vars); $this->assertTrue($view->children['required']->vars['disabled']); }
public function testCreate() { $this->resource->expects($this->once())->method('getModel')->will($this->returnValue($model = \stdClass::class)); $this->assertInstanceOf($model, $this->factory->create()); }