@@ -221,4 +221,67 @@ public function testCreateUrlUppercaseLanguageIfEnabled()
221221 $ this ->assertEquals ($ this ->prepareUrl ('/en-US/foo/baz/bar?x=y ' ), Url::to (['/slug/action ' , 'language ' => 'en-US ' , 'x ' => 'y ' , 'term ' => 'baz ' ]));
222222 }
223223
224+ public function testCreateResetUrlWithLanguageIfPersistenceAndDetectionEnabled ()
225+ {
226+ $ this ->mockUrlManager ([
227+ 'languages ' => ['en-US ' , 'en ' , 'de ' ],
228+ 'rules ' => [
229+ '/foo/<term:.+>/bar ' => 'slug/action ' ,
230+ ],
231+ ]);
232+ $ this ->mockRequest ('/de/site/page ' );
233+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action ' ), Url::to (['/demo/action ' , 'language ' => 'en ' ]));
234+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action?x=y ' ), Url::to (['/demo/action ' , 'x ' => 'y ' , 'language ' => 'en ' ]));
235+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar ' ), Url::to (['/slug/action ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
236+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar?x=y ' ), Url::to (['/slug/action ' , 'x ' => 'y ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
237+ }
238+
239+ public function testCreateResetUrlWithLanguageIfPersistenceDisabled ()
240+ {
241+ $ this ->mockUrlManager ([
242+ 'languages ' => ['en-US ' , 'en ' , 'de ' ],
243+ 'enableLanguagePersistence ' => false ,
244+ 'rules ' => [
245+ '/foo/<term:.+>/bar ' => 'slug/action ' ,
246+ ],
247+ ]);
248+ $ this ->mockRequest ('/de/site/page ' );
249+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action ' ), Url::to (['/demo/action ' , 'language ' => 'en ' ]));
250+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action?x=y ' ), Url::to (['/demo/action ' , 'x ' => 'y ' , 'language ' => 'en ' ]));
251+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar ' ), Url::to (['/slug/action ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
252+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar?x=y ' ), Url::to (['/slug/action ' , 'x ' => 'y ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
253+ }
254+
255+ public function testCreateResetUrlWithLanguageIfDetectionDisabled ()
256+ {
257+ $ this ->mockUrlManager ([
258+ 'languages ' => ['en-US ' , 'en ' , 'de ' ],
259+ 'enableLanguageDetection ' => false ,
260+ 'rules ' => [
261+ '/foo/<term:.+>/bar ' => 'slug/action ' ,
262+ ],
263+ ]);
264+ $ this ->mockRequest ('/de/site/page ' );
265+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action ' ), Url::to (['/demo/action ' , 'language ' => 'en ' ]));
266+ $ this ->assertEquals ($ this ->prepareUrl ('/en/demo/action?x=y ' ), Url::to (['/demo/action ' , 'x ' => 'y ' , 'language ' => 'en ' ]));
267+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar ' ), Url::to (['/slug/action ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
268+ $ this ->assertEquals ($ this ->prepareUrl ('/en/foo/baz/bar?x=y ' ), Url::to (['/slug/action ' , 'x ' => 'y ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
269+ }
270+
271+ public function testCreateUrlWithoutDefaultLanguageIfPersistenceAndDetectionDisabled ()
272+ {
273+ $ this ->mockUrlManager ([
274+ 'languages ' => ['en-US ' , 'en ' , 'de ' ],
275+ 'enableLanguagePersistence ' => false ,
276+ 'enableLanguageDetection ' => false ,
277+ 'rules ' => [
278+ '/foo/<term:.+>/bar ' => 'slug/action ' ,
279+ ],
280+ ]);
281+ $ this ->mockRequest ('/de/site/page ' );
282+ $ this ->assertEquals ($ this ->prepareUrl ('/demo/action ' ), Url::to (['/demo/action ' , 'language ' => 'en ' ]));
283+ $ this ->assertEquals ($ this ->prepareUrl ('/demo/action?x=y ' ), Url::to (['/demo/action ' , 'x ' => 'y ' , 'language ' => 'en ' ]));
284+ $ this ->assertEquals ($ this ->prepareUrl ('/foo/baz/bar ' ), Url::to (['/slug/action ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
285+ $ this ->assertEquals ($ this ->prepareUrl ('/foo/baz/bar?x=y ' ), Url::to (['/slug/action ' , 'x ' => 'y ' , 'term ' => 'baz ' , 'language ' => 'en ' ]));
286+ }
224287}
0 commit comments