1 | <?php |
||
23 | class ResetCharacterActionTest extends AbstractGeneratorControllerTest |
||
24 | { |
||
25 | /** |
||
26 | * @expectedException \RuntimeException |
||
27 | * @expectedExceptionMessage Session is mandatory when using the character generator. |
||
28 | */ |
||
29 | public function test reset needs session() |
||
30 | { |
||
31 | $controller = $this->createController(); |
||
32 | $request = new Request(); |
||
33 | |||
34 | $controller->resetCharacterAction($request); |
||
35 | } |
||
36 | |||
37 | public function test reset session and flash message() |
||
38 | { |
||
39 | $router = $this->createMock(RouterInterface::class); |
||
40 | $router->expects(self::once()) |
||
41 | ->method('generate') |
||
42 | ->with('pierstoval_character_generator_index') |
||
43 | ->willReturn('/generate/') |
||
44 | ; |
||
45 | $translator = $this->createMock(TranslatorInterface::class); |
||
46 | $translator->expects(self::once()) |
||
47 | ->method('trans') |
||
48 | ->with('steps.reset.character', [], 'PierstovalCharacterManager') |
||
49 | ->willReturn('Translated flash message') |
||
50 | ; |
||
51 | |||
52 | $controller = $this->createController(null, $router, $translator); |
||
53 | $request = $this->createRequest(); |
||
54 | $session = $request->getSession(); |
||
55 | |||
56 | if (!$session) { |
||
57 | throw new \RuntimeException('Session should have been set in the test.'); |
||
58 | } |
||
59 | |||
60 | $session->set('step', 10); |
||
61 | $session->set('character', ['01' => 'step value is set and has to be removed']); |
||
62 | |||
63 | $response = $controller->resetCharacterAction($request); |
||
64 | |||
65 | static::assertSame([], $session->get('character')); |
||
66 | static::assertSame(1, $session->get('step')); |
||
67 | static::assertSame(['Translated flash message'], $session->getFlashBag()->get('success')); |
||
68 | static::assertInstanceOf(RedirectResponse::class, $response); |
||
69 | static::assertSame('/generate/', $response->headers->get('location')); |
||
70 | } |
||
71 | |||
72 | public function test reset session and flash message without translator() |
||
73 | { |
||
74 | $router = $this->createMock(RouterInterface::class); |
||
75 | $router->expects(self::once()) |
||
76 | ->method('generate') |
||
77 | ->with('pierstoval_character_generator_index') |
||
78 | ->willReturn('/generate/') |
||
79 | ; |
||
80 | |||
81 | $controller = new GeneratorController( |
||
82 | $this->createMock(StepResolverInterface::class), |
||
83 | $this->createMock(ActionsRegistryInterface::class), |
||
84 | $router |
||
85 | ); |
||
86 | |||
87 | $request = $this->createRequest(); |
||
88 | $session = $request->getSession(); |
||
89 | |||
90 | if (!$session) { |
||
91 | throw new \RuntimeException('Session should have been set in the test.'); |
||
92 | } |
||
93 | |||
94 | $session->set('step', 10); |
||
95 | $session->set('character', ['01' => 'step value is set and has to be removed']); |
||
96 | |||
97 | $response = $controller->resetCharacterAction($request); |
||
98 | |||
99 | static::assertSame([], $session->get('character')); |
||
100 | static::assertSame(1, $session->get('step')); |
||
101 | static::assertSame(['steps.reset.character'], $session->getFlashBag()->get('success')); |
||
102 | static::assertInstanceOf(RedirectResponse::class, $response); |
||
103 | static::assertSame('/generate/', $response->headers->get('location')); |
||
104 | } |
||
105 | } |
||
106 |