test/unit/garb/report_response_test.rb in garb-0.7.5 vs test/unit/garb/report_response_test.rb in garb-0.7.6

- old
+ new

@@ -1,14 +1,30 @@ -require File.join(File.dirname(__FILE__), '..', '..', '/test_helper') +require 'test_helper' module Garb + SpecialKlass = Class.new(OpenStruct) + class ReportResponseTest < MiniTest::Unit::TestCase context "A ReportResponse" do - should "parse results from atom xml" do - filename = File.join(File.dirname(__FILE__), '..', '..', "/fixtures/report_feed.xml") - response = ReportResponse.new(File.read(filename)) - - assert_equal ['33', '2', '1'], response.results.map(&:pageviews) + context "with a report feed" do + setup do + @file = File.read(File.join(File.dirname(__FILE__), '..', '..', "/fixtures/report_feed.xml")) + end + + should "parse results from atom xml" do + response = ReportResponse.new(@file) + assert_equal ['33', '2', '1'], response.results.map(&:pageviews) + end + + should "default to returning an array of OpenStruct objects" do + response = ReportResponse.new(@file) + assert_equal [OpenStruct, OpenStruct, OpenStruct], response.results.map(&:class) + end + + should "return an array of instances of a specified class" do + response = ReportResponse.new(@file, SpecialKlass) + assert_equal [SpecialKlass, SpecialKlass, SpecialKlass], response.results.map(&:class) + end end should "return an empty array if there are no results" do response = ReportResponse.new("result xml") Crack::XML.stubs(:parse).with("result xml").returns({'feed' => {'entry' => nil}})