Skip to content
This repository has been archived by the owner on Nov 19, 2021. It is now read-only.

Commit

Permalink
Merge commit 'sr/mime' into sr-mime
Browse files Browse the repository at this point in the history
Conflicts:
	Rakefile
	lib/webrat.rb
  • Loading branch information
brynary committed Aug 13, 2009
2 parents 3cdf378 + 195f9c3 commit 27a773e
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 22 deletions.
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Most Ruby web frameworks and testing frameworks are supported.

# Dependencies
s.add_dependency "nokogiri", ">= 1.2.0"
s.add_dependency "rack", ">= 1.0"

# TODO: Add development dependencies
end
Expand Down
1 change: 1 addition & 0 deletions lib/webrat.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class WebratError < StandardError
end
end

require "rack"
require "nokogiri"
require "webrat/core/xml/nokogiri"
require "webrat/core"
33 changes: 11 additions & 22 deletions lib/webrat/core/mime.rb
Original file line number Diff line number Diff line change
@@ -1,29 +1,18 @@
module Webrat #:nodoc:
module MIME #:nodoc:
MIME_TYPES = Rack::Mime::MIME_TYPES.dup.merge(
".multipart_form" => "multipart/form-data",
".url_encoded_form" => "application/x-www-form-urlencoded"
).freeze

def self.mime_type(string_or_symbol) #:nodoc:
if string_or_symbol.is_a?(String)
string_or_symbol
else
case string_or_symbol
when :text then "text/plain"
when :html then "text/html"
when :js then "text/javascript"
when :css then "text/css"
when :ics then "text/calendar"
when :csv then "text/csv"
when :xml then "application/xml"
when :rss then "application/rss+xml"
when :atom then "application/atom+xml"
when :yaml then "application/x-yaml"
when :multipart_form then "multipart/form-data"
when :url_encoded_form then "application/x-www-form-urlencoded"
when :json then "application/json"
else
raise ArgumentError.new("Invalid Mime type: #{string_or_symbol.inspect}")
end
end
def mime_type(type)
return type if type.nil? || type.to_s.include?("/")
type = ".#{type}" unless type.to_s[0] == ?.
MIME_TYPES.fetch(type) { |type|
raise ArgumentError.new("Invalid Mime type: #{type}")
}
end

module_function :mime_type
end
end
5 changes: 5 additions & 0 deletions spec/private/core/session_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ def session.response_body
it "should raise an error if a symbol Mime type is passed that does not exist" do
lambda { webrat_session.http_accept(:oogabooga) }.should raise_error(ArgumentError)
end

it "should recognize a couple of webrat-specific formats" do
webrat_session.http_accept(:multipart_form).should == "multipart/form-data"
webrat_session.http_accept(:url_encoded_form).should == "application/x-www-form-urlencoded"
end
end

describe "#request_page" do
Expand Down

0 comments on commit 27a773e

Please sign in to comment.