forked from api-platform/core
-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChainDataPersisterTest.php
88 lines (67 loc) · 3.31 KB
/
ChainDataPersisterTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/*
* This file is part of the API Platform project.
*
* (c) Kévin Dunglas <dunglas@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace ApiPlatform\Core\Tests\DataPersister;
use ApiPlatform\Core\DataPersister\ChainDataPersister;
use ApiPlatform\Core\DataPersister\DataPersisterInterface;
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\Dummy;
use PHPUnit\Framework\TestCase;
/**
* @author Baptiste Meyer <baptiste.meyer@gmail.com>
*/
class ChainDataPersisterTest extends TestCase
{
public function testContruct()
{
$this->assertInstanceOf(DataPersisterInterface::class, new ChainDataPersister([$this->prophesize(DataPersisterInterface::class)->reveal()]));
}
public function testSupports()
{
$dummy = new Dummy();
$persisterProphecy = $this->prophesize(DataPersisterInterface::class);
$persisterProphecy->supports($dummy)->willReturn(true)->shouldBeCalled();
$this->assertTrue((new ChainDataPersister([$persisterProphecy->reveal()]))->supports($dummy));
}
public function testDoesNotSupport()
{
$dummy = new Dummy();
$persisterProphecy = $this->prophesize(DataPersisterInterface::class);
$persisterProphecy->supports($dummy)->willReturn(false)->shouldBeCalled();
$this->assertFalse((new ChainDataPersister([$persisterProphecy->reveal()]))->supports($dummy));
}
public function testPersist()
{
$dummy = new Dummy();
$fooPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$fooPersisterProphecy->supports($dummy)->willReturn(false)->shouldBeCalled();
$fooPersisterProphecy->persist($dummy)->shouldNotBeCalled();
$barPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$barPersisterProphecy->supports($dummy)->willReturn(true)->shouldBeCalled();
$barPersisterProphecy->persist($dummy)->shouldBeCalled();
$foobarPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$foobarPersisterProphecy->supports($dummy)->shouldNotBeCalled();
$foobarPersisterProphecy->persist($dummy)->shouldNotBeCalled();
(new ChainDataPersister([$fooPersisterProphecy->reveal(), $barPersisterProphecy->reveal(), $foobarPersisterProphecy->reveal()]))->persist($dummy);
}
public function testRemove()
{
$dummy = new Dummy();
$fooPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$fooPersisterProphecy->supports($dummy)->willReturn(false)->shouldBeCalled();
$fooPersisterProphecy->remove($dummy)->shouldNotBeCalled();
$barPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$barPersisterProphecy->supports($dummy)->willReturn(true)->shouldBeCalled();
$barPersisterProphecy->remove($dummy)->shouldBeCalled();
$foobarPersisterProphecy = $this->prophesize(DataPersisterInterface::class);
$foobarPersisterProphecy->supports($dummy)->shouldNotBeCalled();
$foobarPersisterProphecy->remove($dummy)->shouldNotBeCalled();
(new ChainDataPersister([$fooPersisterProphecy->reveal(), $barPersisterProphecy->reveal(), $foobarPersisterProphecy->reveal()]))->remove($dummy);
}
}