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}})