You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.2 KiB
115 lines
4.2 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
namespace Chamilo\Tests\CoreBundle\Repository;
|
|
|
|
use Chamilo\CoreBundle\Entity\ExtraField;
|
|
use Chamilo\CoreBundle\Entity\ExtraFieldOptions;
|
|
use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch;
|
|
use Chamilo\CoreBundle\Repository\ExtraFieldOptionsRepository;
|
|
use Chamilo\CoreBundle\Repository\ExtraFieldRepository;
|
|
use Chamilo\Tests\AbstractApiTest;
|
|
use Chamilo\Tests\ChamiloTestTrait;
|
|
use Gedmo\Translatable\Entity\Translation;
|
|
|
|
class ExtraFieldOptionsRepositoryTest extends AbstractApiTest
|
|
{
|
|
use ChamiloTestTrait;
|
|
|
|
public function testCreate(): void
|
|
{
|
|
$em = $this->getEntityManager();
|
|
$extraFieldRepo = static::getContainer()->get(ExtraFieldRepository::class);
|
|
$extraFieldOptionsRepo = static::getContainer()->get(ExtraFieldOptionsRepository::class);
|
|
|
|
$defaultCount = $extraFieldRepo->count([]);
|
|
$defaultCountOptions = $extraFieldOptionsRepo->count([]);
|
|
|
|
$extraField = (new ExtraField())
|
|
->setDisplayText('test')
|
|
->setVariable('test')
|
|
->setDescription('desc')
|
|
->setHelperText('help')
|
|
->setExtraFieldType(ExtraField::USER_FIELD_TYPE)
|
|
->setFieldType(\ExtraField::FIELD_TYPE_TEXT)
|
|
;
|
|
$em->persist($extraField);
|
|
|
|
$extraFieldOptions = (new ExtraFieldOptions())
|
|
->setDisplayText('test in ENGLISH')
|
|
->setValue('value')
|
|
->setField($extraField)
|
|
->setOptionOrder(0)
|
|
->setPriority('urgent')
|
|
->setPriorityMessage('is urgent!')
|
|
;
|
|
$this->assertHasNoEntityViolations($extraFieldOptions);
|
|
$em->persist($extraFieldOptions);
|
|
$em->flush();
|
|
|
|
$this->assertSame('test in ENGLISH', $extraFieldOptions->getDisplayText());
|
|
$this->assertSame('value', $extraFieldOptions->getValue());
|
|
$this->assertSame(0, $extraFieldOptions->getOptionOrder());
|
|
$this->assertSame('urgent', $extraFieldOptions->getPriority());
|
|
$this->assertSame('is urgent!', $extraFieldOptions->getPriorityMessage());
|
|
|
|
$this->assertSame($defaultCount + 1, $extraFieldRepo->count([]));
|
|
$this->assertSame($defaultCountOptions + 1, $extraFieldOptionsRepo->count([]));
|
|
}
|
|
|
|
public function testCreateWithTranslation(): void
|
|
{
|
|
$this->testCreate();
|
|
$em = $this->getEntityManager();
|
|
|
|
$extraFieldRepo = static::getContainer()->get(ExtraFieldRepository::class);
|
|
$extraFieldOptionsRepo = static::getContainer()->get(ExtraFieldOptionsRepository::class);
|
|
|
|
/** @var ExtraFieldOptions $extraFieldOption */
|
|
$extraFieldOption = $extraFieldOptionsRepo->findOneBy(['value' => 'value']);
|
|
$this->assertNotNull($extraFieldOption);
|
|
$this->assertInstanceOf(ExtraFieldOptions::class, $extraFieldOption);
|
|
|
|
$extraFieldOption
|
|
->setTranslatableLocale('fr_FR')
|
|
->setDisplayText('test in FRENCH')
|
|
;
|
|
$em->persist($extraFieldOption);
|
|
$em->flush();
|
|
|
|
/** @var ExtraFieldOptions $extraFieldOption */
|
|
$extraFieldOption = $extraFieldOptionsRepo->find($extraFieldOption->getId());
|
|
|
|
$extraFieldOption
|
|
->setTranslatableLocale('pl')
|
|
->setDisplayText('test in POLISH')
|
|
;
|
|
$em->persist($extraFieldOption);
|
|
$em->flush();
|
|
$em->clear();
|
|
|
|
/** @var ExtraFieldOptions $extraFieldOption */
|
|
$extraFieldOption = $extraFieldOptionsRepo->find($extraFieldOption->getId());
|
|
$repository = $em->getRepository(Translation::class);
|
|
|
|
$translations = $repository->findTranslations($extraFieldOption);
|
|
|
|
$this->assertCount(2, $translations);
|
|
$expected = [
|
|
'fr_FR' => [
|
|
'displayText' => 'test in FRENCH',
|
|
],
|
|
'pl' => [
|
|
'displayText' => 'test in POLISH',
|
|
],
|
|
];
|
|
$this->assertSame($expected, $translations);
|
|
|
|
/** @var ExtraFieldOptions $extraFieldOption */
|
|
$extraFieldOption = $extraFieldOptionsRepo->find($extraFieldOption->getId());
|
|
$this->assertSame('test in ENGLISH', $extraFieldOption->getDisplayText());
|
|
}
|
|
}
|
|
|