-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSetonoSyliusLoyaltyExtensionTest.php
More file actions
120 lines (96 loc) · 4.36 KB
/
Copy pathSetonoSyliusLoyaltyExtensionTest.php
File metadata and controls
120 lines (96 loc) · 4.36 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
declare(strict_types=1);
namespace Setono\SyliusLoyaltyPlugin\Tests\Unit\DependencyInjection;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
use Setono\SyliusLoyaltyPlugin\DependencyInjection\SetonoSyliusLoyaltyExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
final class SetonoSyliusLoyaltyExtensionTest extends TestCase
{
use ProphecyTrait;
/**
* @test
*/
public function it_does_not_prepend_winzou_configuration_when_winzou_is_not_installed(): void
{
$container = new ContainerBuilder();
(new SetonoSyliusLoyaltyExtension())->prepend($container);
self::assertSame([], $container->getExtensionConfig('winzou_state_machine'));
}
/**
* @test
*/
public function it_prepends_a_dedicated_command_bus(): void
{
$container = new ContainerBuilder();
(new SetonoSyliusLoyaltyExtension())->prepend($container);
$encoded = json_encode($container->getExtensionConfig('framework'));
self::assertIsString($encoded);
self::assertStringContainsString('setono_sylius_loyalty.command_bus', $encoded);
}
/**
* @test
*/
public function it_prepends_winzou_award_and_clawback_callbacks_for_the_relevant_transitions(): void
{
$container = new ContainerBuilder();
$container->registerExtension($this->winzouExtension());
(new SetonoSyliusLoyaltyExtension())->prepend($container);
$config = $container->getExtensionConfig('winzou_state_machine');
self::assertCount(1, $config);
$encoded = json_encode($config[0]);
self::assertIsString($encoded);
self::assertStringContainsString('sylius_order_payment', $encoded);
self::assertStringContainsString('sylius_order', $encoded);
self::assertStringContainsString('sylius_order_checkout', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_award_order_points', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_clawback_order_points', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_redeem_order_points', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_rollback_redemption', $encoded);
self::assertStringContainsString('sylius_product_review', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_award_review_points', $encoded);
self::assertStringContainsString('"on":["pay"]', $encoded);
self::assertStringContainsString('"on":["fulfill"]', $encoded);
self::assertStringContainsString('"on":["refund"]', $encoded);
self::assertStringContainsString('"on":["cancel"]', $encoded);
self::assertStringContainsString('"on":["complete"]', $encoded);
self::assertStringContainsString('"on":["accept"]', $encoded);
}
/**
* @test
*/
public function it_prepends_the_redemption_widget_into_the_cart_summary(): void
{
$container = new ContainerBuilder();
$container->registerExtension($this->extension('sylius_ui'));
(new SetonoSyliusLoyaltyExtension())->prepend($container);
$config = $container->getExtensionConfig('sylius_ui');
self::assertCount(1, $config);
$encoded = json_encode($config[0]);
self::assertIsString($encoded);
self::assertStringContainsString('sylius.shop.cart.summary.items', $encoded);
self::assertStringContainsString('setono_sylius_loyalty_redemption', $encoded);
self::assertStringContainsString('_redemption.html.twig', $encoded);
}
/**
* @test
*/
public function it_does_not_prepend_the_widget_when_sylius_ui_is_not_installed(): void
{
$container = new ContainerBuilder();
(new SetonoSyliusLoyaltyExtension())->prepend($container);
self::assertSame([], $container->getExtensionConfig('sylius_ui'));
}
private function winzouExtension(): ExtensionInterface
{
return $this->extension('winzou_state_machine');
}
private function extension(string $alias): ExtensionInterface
{
$extension = $this->prophesize(ExtensionInterface::class);
$extension->getAlias()->willReturn($alias);
$extension->getNamespace()->willReturn('');
return $extension->reveal();
}
}