testSetLocaleForTranslatableObject()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Sonata Project package.
7
 *
8
 * (c) Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Sonata\TranslationBundle\Tests\AdminExtension\Knplabs;
15
16
use Sonata\AdminBundle\Admin\AdminInterface;
17
use Sonata\TranslationBundle\Admin\Extension\Knplabs\TranslatableAdminExtension;
18
use Sonata\TranslationBundle\Checker\TranslatableChecker;
19
use Sonata\TranslationBundle\Model\TranslatableInterface;
20
use Sonata\TranslationBundle\Tests\Fixtures\Model\Knplabs\TranslatableEntity;
21
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
22
use Symfony\Component\HttpFoundation\Request;
23
24
/**
25
 * @group  translatable-knplabs
26
 */
27
final class TranslatableAdminExtensionTest extends WebTestCase
28
{
29
    /**
30
     * @var AdminInterface
31
     */
32
    protected $admin;
33
34
    /**
35
     * @var TranslatableEntity
36
     */
37
    protected $object;
38
39
    /**
40
     * @var TranslatableAdminExtension
41
     */
42
    protected $extension;
43
44
    protected function setUp(): void
45
    {
46
        $translatableChecker = new TranslatableChecker();
47
        $translatableChecker->setSupportedInterfaces([
48
            TranslatableInterface::class,
49
        ]);
50
        $this->extension = new TranslatableAdminExtension($translatableChecker);
51
52
        $request = $this->prophesize(Request::class);
53
        $request->get('tl')->willReturn('es');
54
55
        $this->admin = $this->prophesize(AdminInterface::class);
56
        $this->admin->getRequest()->willReturn($request->reveal());
57
        $this->admin->hasRequest()->willReturn(true);
58
59
        $this->object = new TranslatableEntity();
60
    }
61
62
    public function testSetLocaleForTranslatableObject(): void
63
    {
64
        $this->extension->alterNewInstance($this->admin->reveal(), $this->object);
65
66
        $this->assertSame('es', $this->object->getLocale());
67
    }
68
69
    public function testAlterObjectForTranslatableObject(): void
70
    {
71
        $this->extension->alterObject($this->admin->reveal(), $this->object);
72
73
        $this->assertSame('es', $this->object->getLocale());
74
    }
75
76
    public function testPreUpdate(): void
77
    {
78
        $object = $this->prophesize(TranslatableEntity::class);
79
        $object->mergeNewTranslations()->shouldBeCalled();
80
81
        $this->extension->preUpdate($this->admin->reveal(), $object->reveal());
82
    }
83
84
    public function testPrePersist(): void
85
    {
86
        $object = $this->prophesize(TranslatableEntity::class);
87
        $object->mergeNewTranslations()->shouldBeCalled();
88
89
        $this->extension->prePersist($this->admin->reveal(), $object->reveal());
90
    }
91
}
92