Files
Chamilo/vendor/sylius/translation/spec/Model/AbstractTranslatableSpec.php
2025-04-10 12:24:57 +02:00

108 lines
3.4 KiB
PHP

<?php
namespace spec\Sylius\Component\Translation\Model;
use PhpSpec\ObjectBehavior;
use Sylius\Component\Translation\Model\TranslationInterface;
use Sylius\Component\Translation\Model\AbstractTranslatable;
use Sylius\Component\Translation\Model\AbstractTranslation;
class AbstractTranslatableSpec extends ObjectBehavior
{
function let()
{
$this->beAnInstanceOf('spec\Sylius\Component\Translation\Model\ConcreteTranslatable');
}
function it_is_translatable()
{
$this->shouldImplement('Sylius\Component\Translation\Model\TranslatableInterface');
}
function it_initializes_translattion_collection_by_default()
{
$this->getTranslations()->shouldHaveType('Doctrine\Common\Collections\Collection');
}
function it_adds_translation(TranslationInterface $translation)
{
$translation->getLocale()->willReturn('en');
$translation->setTranslatable($this)->shouldBeCalled();
$this->addTranslation($translation)->shouldReturn($this);
$this->hasTranslation($translation)->shouldReturn(true);
}
function it_removes_translation(TranslationInterface $translation)
{
$this->addTranslation($translation);
$this->removeTranslation($translation)->shouldReturn($this);
$this->hasTranslation($translation)->shouldReturn(false);
}
function its_current_locale_is_mutable()
{
$this->setCurrentLocale('en')->shouldReturn($this);
$this->getCurrentLocale()->shouldReturn('en');
}
function its_current_translation_is_mutable(TranslationInterface $translation)
{
$this->setCurrentTranslation($translation);
$this->getCurrentTranslation()->shouldReturn($translation);
}
function its_fallback_locale_is_mutable()
{
$this->setFallbackLocale('en');
$this->getFallbackLocale()->shouldReturn('en');
}
function it_throws_exception_if_no_locale_has_been_set()
{
$this->shouldThrow('\RuntimeException')->duringTranslate();
}
function it_translates_properly(TranslationInterface $translation)
{
$translation->getLocale()->willReturn('en');
$translation->setTranslatable($this)->shouldBeCalled();
$this->addTranslation($translation);
$this->setCurrentLocale('en');
$this->translate()->shouldReturn($translation);
}
function it_creates_new_empty_translation_properly()
{
$this->setCurrentLocale('en');
$this->translate()->shouldHaveType('spec\Sylius\Component\Translation\Model\ConcreteTranslatableTranslation');
}
function it_clones_new_translation_properly(TranslationInterface $translation)
{
$translation->getLocale()->willReturn('en');
$translation->setTranslatable($this)->shouldBeCalled();
$translation->acmeProperty = 'acmeProp';
$this->addTranslation($translation);
$this->setCurrentLocale('en');
$translation = $this->translate();
$translation->shouldImplement('Sylius\Component\Translation\Model\TranslationInterface');
$translation->acmeProperty->shouldBe('acmeProp');
}
}
class ConcreteTranslatable extends AbstractTranslatable
{
protected function getTranslationEntityClass(){
return 'spec\Sylius\Component\Translation\Model\ConcreteTranslatableTranslation';
}
}
class ConcreteTranslatableTranslation extends AbstractTranslation
{
}