14
14
use PHPUnit \Framework \TestCase ;
15
15
use Symfony \Bridge \Monolog \Processor \RouteProcessor ;
16
16
use Symfony \Component \HttpFoundation \ParameterBag ;
17
+ use Symfony \Component \HttpFoundation \Request ;
17
18
use Symfony \Component \HttpKernel \Event \FinishRequestEvent ;
18
19
use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
19
20
20
21
class RouteProcessorTest extends TestCase
21
22
{
22
- const TEST_CONTROLLER = 'App\Controller\SomeController::someMethod ' ;
23
- const TEST_ROUTE = 'someRouteName ' ;
24
- const TEST_PARAMS = array ('param1 ' => 'value1 ' );
23
+ private const TEST_CONTROLLER = 'App\Controller\SomeController::someMethod ' ;
24
+ private const TEST_ROUTE = 'someRouteName ' ;
25
+ private const TEST_PARAMS = array ('param1 ' => 'value1 ' );
25
26
26
27
public function testProcessor ()
27
28
{
29
+ $ request = $ this ->mockFilledRequest ();
28
30
$ processor = new RouteProcessor ();
29
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( ));
31
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ request ));
30
32
31
33
$ record = $ processor (array ('extra ' => array ()));
32
34
@@ -40,8 +42,9 @@ public function testProcessor()
40
42
41
43
public function testProcessorWithoutParams ()
42
44
{
45
+ $ request = $ this ->mockFilledRequest ();
43
46
$ processor = new RouteProcessor (false );
44
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( ));
47
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ request ));
45
48
46
49
$ record = $ processor (array ('extra ' => array ()));
47
50
@@ -56,10 +59,12 @@ public function testProcessorWithoutParams()
56
59
public function testProcessorWithSubRequests ()
57
60
{
58
61
$ controllerFromSubRequest = 'OtherController::otherMethod ' ;
62
+ $ mainRequest = $ this ->mockFilledRequest ();
63
+ $ subRequest = $ this ->mockFilledRequest ($ controllerFromSubRequest );
59
64
60
65
$ processor = new RouteProcessor (false );
61
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( ));
62
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( $ controllerFromSubRequest ));
66
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ mainRequest ));
67
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ subRequest ));
63
68
64
69
$
10000
record = $ processor (array ('extra ' => array ()));
65
70
@@ -75,14 +80,15 @@ public function testProcessorWithSubRequests()
75
80
);
76
81
}
77
82
78
- public function testFinishRequestRemovesLastEntry ()
83
+ public function testFinishRequestRemovesRelatedEntry ()
79
84
{
80
- $ controllerFromSubRequest = 'OtherController::otherMethod ' ;
85
+ $ mainRequest = $ this ->mockFilledRequest ();
86
+ $ subRequest = $ this ->mockFilledRequest ('OtherController::otherMethod ' );
81
87
82
88
$ processor = new RouteProcessor (false );
83
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( ));
84
- $ processor ->onKernelRequest ($ this ->getFilledRequestEvent ( $ controllerFromSubRequest ));
85
- $ processor ->onKernelFinishRequest ($ this ->getFinishRequestEvent ( ));
89
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ mainRequest ));
90
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ subRequest ));
91
+ $ processor ->removeRouteData ($ this ->mockFinishRequestEvent ( $ subRequest ));
86
92
$ record = $ processor (array ('extra ' => array ()));
87
93
88
94
$ this ->assertArrayHasKey ('requests ' , $ record ['extra ' ]);
@@ -92,16 +98,17 @@ public function testFinishRequestRemovesLastEntry()
92
98
$ record ['extra ' ]['requests ' ][0 ]
93
99
);
94
100
95
- $ processor ->onKernelFinishRequest ($ this ->getFinishRequestEvent ( ));
101
+ $ processor ->removeRouteData ($ this ->mockFinishRequestEvent ( $ mainRequest ));
96
102
$ record = $ processor (array ('extra ' => array ()));
97
103
98
104
$ this ->assertArrayNotHasKey ('requests ' , $ record ['extra ' ]);
99
105
}
100
106
101
107
public function testProcessorWithEmptyRequest ()
102
108
{
109
+ $ request = $ this ->mockEmptyRequest ();
103
110
$ processor = new RouteProcessor ();
104
- $ processor ->onKernelRequest ($ this ->getEmptyRequestEvent ( ));
111
+ $ processor ->addRouteData ($ this ->mockGetResponseEvent ( $ request ));
105
112
106
113
$ record = $ processor (array ('extra ' => array ()));
107
114
$ this ->assertEquals (array ('extra ' => array ()), $ record );
@@ -115,41 +122,41 @@ public function testProcessorDoesNothingWhenNoRequest()
115
122
$ this ->assertEquals (array ('extra ' => array ()), $ record );
116
123
}
117
124
118
- private function getFinishRequestEvent ( array $ attributes = array ( ' _controller ' => ' test::test ' )): FinishRequestEvent
125
+ private function mockGetResponseEvent ( Request $ request ): GetResponseEvent
119
126
{
120
- $ request = new \stdClass ();
121
- $ request ->attributes = new ParameterBag ($ attributes );
122
-
123
- $ event = $ this ->getMockBuilder (FinishRequestEvent::class)->disableOriginalConstructor ()->getMock ();
127
+ $ event = $ this ->getMockBuilder (GetResponseEvent::class)->disableOriginalConstructor ()->getMock ();
124
128
$ event ->method ('getRequest ' )->willReturn ($ request );
125
129
126
130
return $ event ;
127
131
}
128
132
129
- private function getRequestEvent ( array $ attributes ): GetResponseEvent
133
+ private function mockFinishRequestEvent ( Request $ request ): FinishRequestEvent
130
134
{
131
- $ request = new \stdClass ();
132
- $ request ->attributes = new ParameterBag ($ attributes );
133
-
134
- $ event = $ this ->getMockBuilder (GetResponseEvent::class)->disableOriginalConstructor ()->getMock ();
135
+ $ event = $ this ->getMockBuilder (FinishRequestEvent::class)->disableOriginalConstructor ()->getMock ();
135
136
$ event ->method ('getRequest ' )->willReturn ($ request );
136
137
137
138
return $ event ;
138
139
}
139
140
140
- private function getEmptyRequestEvent (): GetResponseEvent
141
+ private function mockEmptyRequest (): Request
141
142
{
142
- return $ this ->getRequestEvent (array ());
143
+ return $ this ->mockRequest (array ());
143
144
}
144
145
145
- private function getFilledRequestEvent (string $ controller = self ::TEST_CONTROLLER ): GetResponseEvent
146
+ private function mockFilledRequest (string $ controller = self ::TEST_CONTROLLER ): Request
146
147
{
147
- return $ this ->getRequestEvent (
148
- array (
149
- '_controller ' => $ controller ,
150
- '_route ' => self ::TEST_ROUTE ,
151
- '_route_params ' => self ::TEST_PARAMS ,
152
- )
153
- );
148
+ return $ this ->mockRequest (array (
149
+ '_controller ' => $ controller ,
150
+ '_route ' => self ::TEST_ROUTE ,
151
+ '_route_params ' => self ::TEST_PARAMS ,
152
+ ));
153
+ }
154
+
155
+ private function mockRequest (array $ attributes ): Request
156
+ {
157
+ $ request = $ this ->getMockBuilder (Request::class)->disableOriginalConstructor ()->getMock ();
158
+ $ request ->attributes = new ParameterBag ($ attributes );
159
+
160
+ return $ request ;
154
161
}
155
162
}
0 commit comments