Skip to content

Commit 64fb68f

Browse files
committed
Use more realistic setup rather than stubbing
These assertions did matter due to the inconsistent behavior of [the #parameters method][1]. Today, it behaves consistently and they could be removed. Also, one of the methods was stubbed somewhat incorrectly, so it is better not to stub and instead, make them close to more realistic use cases. [1]: rails#13999 (comment)
1 parent c10c21f commit 64fb68f

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)