Following on from my previous post about customising ActiveRecord’s to_xml output, I have had to write specs to make sure a custom attribute I have added to a model’s XML serialisation actually appears as expected.
ActiveSupport’s Hash.from_xml class method makes this a piece of cake. Instead of testing against the XML as a string or parsing it manually, you can turn it into a hash and get directly to the attribute you want. Behold:
describe Product do
before(:each) do
@product = Product.new
end
# net_price is the custom attribute I have added to the XML serialisation
it "should include net price in XML serialisation" do
@product.attributes = valid_product_attributes
Hash.from_xml(@product.to_xml)['product']['net_price'].should == @product.net_price
end
end