@@ -827,4 +827,72 @@ public function test_the_page_url_doesnt_double_up(): void
827
827
828
828
$ this ->assertSame ('/subpath/product/123 ' , $ page ->url );
829
829
}
830
+
831
+ public function test_trailing_slashes_in_url_are_preserved (): void
832
+ {
833
+ // Test with trailing slash in the URL
834
+ $ request = Request::create ('/categories/ ' , 'GET ' );
835
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
836
+
837
+ $ response = new Response ('Category/Index ' , []);
838
+ $ response = $ response ->toResponse ($ request );
839
+ $ page = $ response ->getData ();
840
+
841
+ $ this ->assertSame ('/categories/ ' , $ page ->url );
842
+
843
+ // Test with trailing slash and query parameters
844
+ $ request = Request::create ('/categories/?page=1&sort=name ' , 'GET ' );
845
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
846
+
847
+ $ response = new Response ('Category/Index ' , []);
848
+ $ response = $ response ->toResponse ($ request );
849
+ $ page = $ response ->getData ();
850
+
851
+ $ this ->assertSame ('/categories/?page=1&sort=name ' , $ page ->url );
852
+
853
+ // Test with trailing slash and proxy prefix
854
+ $ request = Request::create ('/categories/ ' , 'GET ' );
855
+ $ request ->headers ->set ('X_FORWARDED_PREFIX ' , '/admin ' );
856
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
857
+
858
+ $ response = new Response ('Category/Index ' , []);
859
+ $ response = $ response ->toResponse ($ request );
860
+ $ page = $ response ->getData ();
861
+
862
+ $ this ->assertSame ('/admin/categories/ ' , $ page ->url );
863
+ }
864
+
865
+ public function test_non_trailing_slashes_in_url_work_correctly (): void
866
+ {
867
+ // Test with non-trailing slash in the URL
868
+ $ request = Request::create ('/categories ' , 'GET ' );
869
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
870
+
871
+ $ response = new Response ('Category/Index ' , []);
872
+ $ response = $ response ->toResponse ($ request );
873
+ $ page = $ response ->getData ();
874
+
875
+ $ this ->assertSame ('/categories ' , $ page ->url );
876
+
877
+ // Test with non-trailing slash and query parameters
878
+ $ request = Request::create ('/categories?page=1&sort=name ' , 'GET ' );
879
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
880
+
881
+ $ response = new Response ('Category/Index ' , []);
882
+ $ response = $ response ->toResponse ($ request );
883
+ $ page = $ response ->getData ();
884
+
885
+ $ this ->assertSame ('/categories?page=1&sort=name ' , $ page ->url );
886
+
887
+ // Test with non-trailing slash and proxy prefix
888
+ $ request = Request::create ('/categories ' , 'GET ' );
889
+ $ request ->headers ->set ('X_FORWARDED_PREFIX ' , '/admin ' );
890
+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
891
+
892
+ $ response = new Response ('Category/Index ' , []);
893
+ $ response = $ response ->toResponse ($ request );
894
+ $ page = $ response ->getData ();
895
+
896
+ $ this ->assertSame ('/admin/categories ' , $ page ->url );
897
+ }
830
898
}
0 commit comments