aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/test/base_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activeresource/test/base_test.rb')
-rw-r--r--activeresource/test/base_test.rb109
1 files changed, 94 insertions, 15 deletions
diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb
index e4839613ee..97f2ea3d01 100644
--- a/activeresource/test/base_test.rb
+++ b/activeresource/test/base_test.rb
@@ -1,20 +1,32 @@
require "#{File.dirname(__FILE__)}/abstract_unit"
require "fixtures/person"
+require "fixtures/street_address"
class BaseTest < Test::Unit::TestCase
def setup
- ActiveResource::HttpMock.respond_to(
- ActiveResource::Request.new(:get, "/people/1.xml") => ActiveResource::Response.new("<person><name>Matz</name><id type='integer'>1</id></person>"),
- ActiveResource::Request.new(:get, "/people/2.xml") => ActiveResource::Response.new("<person><name>David</name><id type='integer'>2</id></person>"),
- ActiveResource::Request.new(:put, "/people/1.xml") => ActiveResource::Response.new({}, 200),
- ActiveResource::Request.new(:delete, "/people/1.xml") => ActiveResource::Response.new({}, 200),
- ActiveResource::Request.new(:delete, "/people/2.xml") => ActiveResource::Response.new({}, 400),
- ActiveResource::Request.new(:post, "/people.xml") => ActiveResource::Response.new({}, 200),
- ActiveResource::Request.new(:get, "/people/99.xml") => ActiveResource::Response.new({}, 404),
- ActiveResource::Request.new(:get, "/people.xml") => ActiveResource::Response.new(
- "<people><person><name>Matz</name><id type='integer'>1</id></person><person><name>David</name><id type='integer'>2</id></person></people>"
- )
- )
+ @matz = { :id => 1, :name => 'Matz' }.to_xml(:root => 'person')
+ @david = { :id => 2, :name => 'David' }.to_xml(:root => 'person')
+ @addy = { :id => 1, :street => '12345 Street' }.to_xml(:root => 'address')
+ ActiveResource::HttpMock.respond_to do |mock|
+ mock.get "/people/1.xml", @matz
+ mock.get "/people/2.xml", @david
+ mock.put "/people/1", nil, 204
+ mock.delete "/people/1", nil, 200
+ mock.delete "/people/2", nil, 400
+ mock.post "/people", nil, 201, 'Location' => '/people/5.xml'
+ mock.get "/people/99.xml", nil, 404
+ mock.get "/people.xml", "<people>#{@matz}#{@david}</people>"
+ mock.get "/people/1/addresses.xml", "<addresses>#{@addy}</addresses>"
+ mock.get "/people/1/addresses/1.xml", @addy
+ mock.put "/people/1/addresses/1", nil, 204
+ mock.delete "/people/1/addresses/1", nil, 200
+ mock.post "/people/1/addresses", nil, 201, 'Location' => '/people/1/addresses/5'
+ mock.get "/people//addresses.xml", nil, 404
+ mock.get "/people//addresses/1.xml", nil, 404
+ mock.put "/people//addresses/1", nil, 404
+ mock.delete "/people//addresses/1", nil, 404
+ mock.post "/people//addresses", nil, 404
+ end
end
@@ -33,12 +45,47 @@ class BaseTest < Test::Unit::TestCase
assert_equal "people", Person.collection_name
end
+ def test_collection_path
+ assert_equal '/people.xml', Person.collection_path
+ end
+
+ def test_custom_element_path
+ assert_equal '/people/1/addresses/1.xml', StreetAddress.element_path(1, :person_id => 1)
+ end
+
+ def test_custom_collection_path
+ assert_equal '/people/1/addresses.xml', StreetAddress.collection_path(:person_id => 1)
+ end
+
+ def test_custom_element_name
+ assert_equal 'address', StreetAddress.element_name
+ end
+
+ def test_custom_collection_name
+ assert_equal 'addresses', StreetAddress.collection_name
+ end
+
+ def test_prefix
+ assert_equal "/", Person.prefix
+ end
+
+ def test_custom_prefix
+ assert_equal '/people//', StreetAddress.prefix
+ assert_equal '/people/1/', StreetAddress.prefix(:person_id => 1)
+ end
+
def test_find_by_id
matz = Person.find(1)
assert_kind_of Person, matz
assert_equal "Matz", matz.name
end
+ def test_find_by_id_with_custom_prefix
+ addy = StreetAddress.find(1, :person_id => 1)
+ assert_kind_of StreetAddress, addy
+ assert_equal '12345 Street', addy.street
+ end
+
def test_find_all
all = Person.find(:all)
assert_equal 2, all.size
@@ -55,8 +102,21 @@ class BaseTest < Test::Unit::TestCase
def test_find_by_id_not_found
assert_raises(ActiveResource::ResourceNotFound) { Person.find(99) }
+ assert_raises(ActiveResource::ResourceNotFound) { StreetAddress.find(1) }
+ end
+
+ def test_create
+ rick = Person.new
+ rick.save
+ assert_equal '5', rick.id
+ end
+
+ def test_create_with_custom_prefix
+ matzs_house = StreetAddress.new({}, {:person_id => 1})
+ matzs_house.save
+ assert_equal '5', matzs_house.id
end
-
+
def test_update
matz = Person.find(:first)
matz.name = "David"
@@ -64,9 +124,28 @@ class BaseTest < Test::Unit::TestCase
assert_equal "David", matz.name
matz.save
end
-
+
+ def test_update_with_custom_prefix
+ addy = StreetAddress.find(1, :person_id => 1)
+ addy.street = "54321 Street"
+ assert_kind_of StreetAddress, addy
+ assert_equal "54321 Street", addy.street
+ addy.save
+ end
+
def test_destroy
assert Person.find(1).destroy
- assert_raises(ActiveResource::ClientError) { Person.find(2).destroy }
+ ActiveResource::HttpMock.respond_to do |mock|
+ mock.get "/people/1.xml", nil, 404
+ end
+ assert_raises(ActiveResource::ResourceNotFound) { Person.find(1).destroy }
+ end
+
+ def test_destroy_with_custom_prefix
+ assert StreetAddress.find(1, :person_id => 1).destroy
+ ActiveResource::HttpMock.respond_to do |mock|
+ mock.get "/people/1/addresses/1.xml", nil, 404
+ end
+ assert_raises(ActiveResource::ResourceNotFound) { StreetAddress.find(1, :person_id => 1).destroy }
end
end