Skip to content

Commit 092c547

Browse files
authored
Merge pull request rails#31594 from yuki24/refactor-request-test
Refactor tests for request parameters to use more realistic setup
2 parents e612a47 + 64fb68f commit 092c547

File tree

1 file changed

+75
-89
lines changed

1 file changed

+75
-89
lines changed

actionpack/test/dispatch/request_test.rb

Lines changed: 75 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -785,50 +785,44 @@ class RequestMethod < BaseRequestTest
785785

786786
class RequestFormat < BaseRequestTest
787787
test "xml format" do
788-
request = stub_request
789-
assert_called(request, :parameters, times: 2, returns: { format: :xml }) do
790-
assert_equal Mime[:xml], request.format
791-
end
788+
request = stub_request "QUERY_STRING" => "format=xml"
789+
790+
assert_equal Mime[:xml], request.format
792791
end
793792

794793
test "xhtml format" do
795-
request = stub_request
796-
assert_called(request, :parameters, times: 2, returns: { format: :xhtml }) do
797-
assert_equal Mime[:html], request.format
798-
end
794+
request = stub_request "QUERY_STRING" => "format=xhtml"
795+
796+
assert_equal Mime[:html], request.format
799797
end
800798

801799
test "txt format" do
802-
request = stub_request
803-
assert_called(request, :parameters, times: 2, returns: { format: :txt }) do
804-
assert_equal Mime[:text], request.format
805-
end
800+
request = stub_request "QUERY_STRING" => "format=txt"
801+
802+
assert_equal Mime[:text], request.format
806803
end
807804

808805
test "XMLHttpRequest" do
809806
request = stub_request(
810807
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest",
811-
"HTTP_ACCEPT" => [Mime[:js], Mime[:html], Mime[:xml], "text/xml", "*/*"].join(",")
808+
"HTTP_ACCEPT" => [Mime[:js], Mime[:html], Mime[:xml], "text/xml", "*/*"].join(","),
809+
"QUERY_STRING" => ""
812810
)
813811

814-
assert_called(request, :parameters, times: 1, returns: {}) do
815-
assert request.xhr?
816-
assert_equal Mime[:js], request.format
817-
end
812+
assert request.xhr?
813+
assert_equal Mime[:js], request.format
818814
end
819815

820816
test "can override format with parameter negative" do
821-
request = stub_request
822-
assert_called(request, :parameters, times: 2, returns: { format: :txt }) do
823-
assert !request.format.xml?
824-
end
817+
request = stub_request("QUERY_STRING" => "format=txt")
818+
819+
assert !request.format.xml?
825820
end
826821

827822
test "can override format with parameter positive" do
828-
request = stub_request
829-
assert_called(request, :parameters, times: 2, returns: { format: :xml }) do
830-
assert request.format.xml?
831-
end
823+
request = stub_request("QUERY_STRING" => "format=xml")
824+
825+
assert request.format.xml?
832826
end
833827

834828
test "formats text/html with accept header" do
@@ -853,27 +847,24 @@ class RequestFormat < BaseRequestTest
853847
end
854848

855849
test "formats format:text with accept header" do
856-
request = stub_request
857-
assert_called(request, :parameters, times: 2, returns: { format: :txt }) do
858-
assert_equal [Mime[:text]], request.formats
859-
end
850+
request = stub_request("QUERY_STRING" => "format=txt")
851+
852+
assert_equal [Mime[:text]], request.formats
860853
end
861854

862855
test "formats format:unknown with accept header" do
863-
request = stub_request
864-
assert_called(request, :parameters, times: 2, returns: { format: :unknown }) do
865-
assert_instance_of Mime::NullType, request.format
866-
end
856+
request = stub_request("QUERY_STRING" => "format=unknown")
857+
858+
assert_instance_of Mime::NullType, request.format
867859
end
868860

869861
test "format is not nil with unknown format" do
870-
request = stub_request
871-
assert_called(request, :parameters, times: 2, returns: { format: :hello }) do
872-
assert request.format.nil?
873-
assert_not request.format.html?
874-
assert_not request.format.xml?
875-
assert_not request.format.json?
876-
end
862+
request = stub_request("QUERY_STRING" => "format=hello")
863+
864+
assert_nil request.format
865+
assert_not request.format.html?
866+
assert_not request.format.xml?
867+
assert_not request.format.json?
877868
end
878869

879870
test "format does not throw exceptions when malformed parameters" do
@@ -883,73 +874,69 @@ class RequestFormat < BaseRequestTest
883874
end
884875

885876
test "formats with xhr request" do
886-
request = stub_request "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"
887-
assert_called(request, :parameters, times: 1, returns: {}) do
888-
assert_equal [Mime[:js]], request.formats
889-
end
877+
request = stub_request "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest",
878+
"QUERY_STRING" => ""
879+
880+
assert_equal [Mime[:js]], request.formats
890881
end
891882

892883
test "ignore_accept_header" do
893884
old_ignore_accept_header = ActionDispatch::Request.ignore_accept_header
894885
ActionDispatch::Request.ignore_accept_header = true
895886

896887
begin
897-
request = stub_request "HTTP_ACCEPT" => "application/xml"
898-
assert_called(request, :parameters, times: 1, returns: {}) do
899-
assert_equal [ Mime[:html] ], request.formats
900-
end
888+
request = stub_request "HTTP_ACCEPT" => "application/xml",
889+
"QUERY_STRING" => ""
901890

902-
request = stub_request "HTTP_ACCEPT" => "koz-asked/something-crazy"
903-
assert_called(request, :parameters, times: 1, returns: {}) do
904-
assert_equal [ Mime[:html] ], request.formats
905-
end
891+
assert_equal [ Mime[:html] ], request.formats
906892

907-
request = stub_request "HTTP_ACCEPT" => "*/*;q=0.1"
908-
assert_called(request, :parameters, times: 1, returns: {}) do
909-
assert_equal [ Mime[:html] ], request.formats
910-
end
893+
request = stub_request "HTTP_ACCEPT" => "koz-asked/something-crazy",
894+
"QUERY_STRING" => ""
911895

912-
request = stub_request "HTTP_ACCEPT" => "application/jxw"
913-
assert_called(request, :parameters, times: 1, returns: {}) do
914-
assert_equal [ Mime[:html] ], request.formats
915-
end
896+
assert_equal [ Mime[:html] ], request.formats
897+
898+
request = stub_request "HTTP_ACCEPT" => "*/*;q=0.1",
899+
"QUERY_STRING" => ""
900+
901+
assert_equal [ Mime[:html] ], request.formats
902+
903+
request = stub_request "HTTP_ACCEPT" => "application/jxw",
904+
"QUERY_STRING" => ""
905+
906+
assert_equal [ Mime[:html] ], request.formats
916907

917908
request = stub_request "HTTP_ACCEPT" => "application/xml",
918-
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"
909+
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest",
910+
"QUERY_STRING" => ""
919911

920-
assert_called(request, :parameters, times: 1, returns: {}) do
921-
assert_equal [ Mime[:js] ], request.formats
922-
end
912+
assert_equal [ Mime[:js] ], request.formats
923913

924914
request = stub_request "HTTP_ACCEPT" => "application/xml",
925-
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"
926-
assert_called(request, :parameters, times: 2, returns: { format: :json }) do
927-
assert_equal [ Mime[:json] ], request.formats
928-
end
915+
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest",
916+
"QUERY_STRING" => "format=json"
917+
918+
assert_equal [ Mime[:json] ], request.formats
929919
ensure
930920
ActionDispatch::Request.ignore_accept_header = old_ignore_accept_header
931921
end
932922
end
933923

934924
test "format taken from the path extension" do
935-
request = stub_request "PATH_INFO" => "/foo.xml"
936-
assert_called(request, :parameters, times: 1, returns: {}) do
937-
assert_equal [Mime[:xml]], request.formats
938-
end
925+
request = stub_request "PATH_INFO" => "/foo.xml", "QUERY_STRING" => ""
939926

940-
request = stub_request "PATH_INFO" => "/foo.123"
941-
assert_called(request, :parameters, times: 1, returns: {}) do
942-
assert_equal [Mime[:html]], request.formats
943-
end
927+
assert_equal [Mime[:xml]], request.formats
928+
929+
request = stub_request "PATH_INFO" => "/foo.123", "QUERY_STRING" => ""
930+
931+
assert_equal [Mime[:html]], request.formats
944932
end
945933

946934
test "formats from accept headers have higher precedence than path extension" do
947935
request = stub_request "HTTP_ACCEPT" => "application/json",
948-
"PATH_INFO" => "/foo.xml"
936+
"PATH_INFO" => "/foo.xml",
937+
"QUERY_STRING" => ""
949938

950-
assert_called(request, :parameters, times: 1, returns: {}) do
951-
assert_equal [Mime[:json]], request.formats
952-
end
939+
assert_equal [Mime[:json]], request.formats
953940
end
954941
end
955942

@@ -997,15 +984,14 @@ class RequestMimeType < BaseRequestTest
997984

998985
class RequestParameters < BaseRequestTest
999986
test "parameters" do
1000-
request = stub_request
1001-
1002-
assert_called(request, :request_parameters, times: 2, returns: { "foo" => 1 }) do
1003-
assert_called(request, :query_parameters, times: 2, returns: { "bar" => 2 }) do
1004-
assert_equal({ "foo" => 1, "bar" => 2 }, request.parameters)
1005-
assert_equal({ "foo" => 1 }, request.request_parameters)
1006-
assert_equal({ "bar" => 2 }, request.query_parameters)
1007-
end
1008-
end
987+
request = stub_request "CONTENT_TYPE" => "application/json",
988+
"CONTENT_LENGTH" => 9,
989+
"RAW_POST_DATA" => '{"foo":1}',
990+
"QUERY_STRING" => "bar=2"
991+
992+
assert_equal({ "foo" => 1, "bar" => "2" }, request.parameters)
993+
assert_equal({ "foo" => 1 }, request.request_parameters)
994+
assert_equal({ "bar" => "2" }, request.query_parameters)
1009995
end
1010996

1011997
test "parameters not accessible after rack parse error" do

0 commit comments

Comments
 (0)