mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
dc399b96c8
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7518 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
42 lines
No EOL
1.2 KiB
Ruby
42 lines
No EOL
1.2 KiB
Ruby
require "#{File.dirname(__FILE__)}/abstract_unit"
|
|
require "fixtures/person"
|
|
|
|
class FormatTest < Test::Unit::TestCase
|
|
def setup
|
|
@matz = { :id => 1, :name => 'Matz' }
|
|
@david = { :id => 2, :name => 'David' }
|
|
|
|
@programmers = [ @matz, @david ]
|
|
end
|
|
|
|
def test_formats_on_single_element
|
|
for format in [ :json, :xml ]
|
|
using_format(Person, format) do
|
|
ActiveResource::HttpMock.respond_to.get "/people/1.#{format}", {}, ActiveResource::Formats[format].encode(@david)
|
|
assert_equal @david[:name], Person.find(1).name
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_formats_on_collection
|
|
for format in [ :json, :xml ]
|
|
using_format(Person, format) do
|
|
ActiveResource::HttpMock.respond_to.get "/people.#{format}", {}, ActiveResource::Formats[format].encode(@programmers)
|
|
remote_programmers = Person.find(:all)
|
|
assert_equal 2, remote_programmers.size
|
|
assert remote_programmers.select { |p| p.name == 'David' }
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
private
|
|
def using_format(klass, mime_type_reference)
|
|
previous_format = klass.format
|
|
klass.format = mime_type_reference
|
|
|
|
yield
|
|
ensure
|
|
klass.format = previous_format
|
|
end
|
|
end |