Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Increase ActiveResource::Base test coverage. Closes #7173, #7174 [Ric…

…h Collins]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6020 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 1bdb14bdd3cad4ae8850040d6d82c3c3c624f224 1 parent f3f691e
risk danger olson technoweenie authored
2  activeresource/CHANGELOG
View
@@ -1,5 +1,7 @@
*SVN*
+* Increase ActiveResource::Base test coverage. Closes #7173, #7174 [Rich Collins]
+
* Interpret 422 Unprocessable Entity as ResourceInvalid. #7097 [dkubb]
* Mega documentation patches. #7025, #7069 [rwdaigle]
28 activeresource/test/abstract_unit.rb
View
@@ -6,3 +6,31 @@
require 'active_support/breakpoint'
ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/debug.log")
+
+class SetterTrap < Builder::BlankSlate
+ class << self
+ def rollback_sets(obj)
+ returning yield(setter_trap = new(obj)) do
+ setter_trap.rollback_sets
+ end
+ end
+ end
+
+ def initialize(obj)
+ @cache = {}
+ @obj = obj
+ end
+
+ def respond_to?(method)
+ @obj.respond_to?(method)
+ end
+
+ def method_missing(method, *args, &proc)
+ @cache[method] = @obj.send(method.to_s[0 ... -1]) if method.to_s[-1 .. -1] == "=" unless @cache[method]
+ @obj.send method, *args, &proc
+ end
+
+ def rollback_sets
+ @cache.each { |k, v| @obj.send k, v }
+ end
+end
26 activeresource/test/base_test.rb
View
@@ -137,6 +137,27 @@ def test_prefix
assert_equal "/", Person.prefix
assert_equal Set.new, Person.send(:prefix_parameters)
end
+
+ def test_set_prefix
+ SetterTrap.rollback_sets(Person) do |person_class|
+ person_class.prefix = "the_prefix"
+ assert_equal "the_prefix", person_class.prefix
+ end
+ end
+
+ def test_set_prefix_with_inline_keys
+ SetterTrap.rollback_sets(Person) do |person_class|
+ person_class.prefix = "the_prefix:the_param"
+ assert_equal "the_prefixthe_param_value", person_class.prefix(:the_param => "the_param_value")
+ end
+ end
+
+ def test_set_prefix_with_default_value
+ SetterTrap.rollback_sets(Person) do |person_class|
+ person_class.set_prefix
+ assert_equal "/", person_class.prefix
+ end
+ end
def test_custom_prefix
assert_equal '/people//', StreetAddress.prefix
@@ -261,4 +282,9 @@ def test_exists
assert !StreetAddress.new({:id => 1}, {:person_id => 2}).exists?
assert !StreetAddress.new({:id => 2}, {:person_id => 1}).exists?
end
+
+ def test_to_xml
+ matz = Person.find(1)
+ assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n <name>Matz</name>\n <id type=\"integer\">1</id>\n</person>\n", matz.to_xml
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.