added specs for ResultSet and ResultSet class itself - reportable - Fork of reportable required by WarVox, from hdm/reportable.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit 9b6f36fede4867bc4942797ae213df70084cbdbc
 (DIR) parent bd7abefecd4586413307561c5ff84c683870058f
 (HTM) Author: Marco Otte-Witte <marco.otte-witte@simplabs.com>
       Date:   Wed, 21 Apr 2010 16:01:03 +0200
       
       added specs for ResultSet and ResultSet class itself
       
       Diffstat:
         A lib/saulabs/reportable/result_set.… |      40 +++++++++++++++++++++++++++++++
         M spec/other/report_method_spec.rb    |      23 +++++++++++++++++++++++
       
       2 files changed, 63 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/lib/saulabs/reportable/result_set.rb b/lib/saulabs/reportable/result_set.rb
       @@ -0,0 +1,40 @@
       +module Saulabs
       +
       +  module Reportable
       +
       +    # A result set as it is returned by the report methods.
       +    # This is basically a subclass of +Array+ that adds two
       +    # attributes, +model_name+ and +report_name+ that store
       +    # the name of the model and the report the result set
       +    # was generated from.
       +    #
       +    class ResultSet < ::Array
       +
       +      # the name of the model the result set is based on
       +      #
       +      attr_reader :model_name
       +
       +      # the name of the report the result is based on
       +      #
       +      attr_reader :report_name
       +
       +      # Initializes a new result set.
       +      #
       +      # @param [Array] array
       +      #   the array that is the actual result
       +      # @param [String] model_name
       +      #   the name of the model the result set is based on
       +      # @param [String] report_name
       +      #   the name of the report the result is based on
       +      #
       +      def initialize(array, model_name, report_name)
       +        super(array)
       +        @model_name  = model_name
       +        @report_name = report_name.to_s
       +      end
       +
       +    end
       +
       +  end
       +
       +end
 (DIR) diff --git a/spec/other/report_method_spec.rb b/spec/other/report_method_spec.rb
       @@ -2,6 +2,23 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
        
        describe Saulabs::Reportable do
        
       +  before(:all) do
       +    User.create!(:login => 'test 1', :created_at => Time.now - 1.days,  :profile_visits => 1)
       +    User.create!(:login => 'test 2', :created_at => Time.now - 2.days, :profile_visits => 2)
       +  end
       +
       +  it 'should return a Saulabs::Reportable::ResultSet' do
       +    User.registrations_report.should be_instance_of(Saulabs::Reportable::ResultSet)
       +  end
       +
       +  it 'should return a result set that stores the name of the model the report was invoked on' do
       +    User.registrations_report.model_name.should == User.name
       +  end
       +
       +  it 'should return a result set that stores the name of the report that was invoked' do
       +    User.registrations_report.report_name.should == 'registrations'
       +  end
       +
          describe 'for inherited models' do
        
            before(:all) do
       @@ -10,6 +27,10 @@ describe Saulabs::Reportable do
              SpecialUser.create!(:login => 'test 3', :created_at => Time.now - 2.days, :profile_visits => 3)
            end
        
       +    it 'should return a result set that stores the model the report was invoked on' do
       +      SpecialUser.registrations_report.model_name.should == SpecialUser.name
       +    end
       +
            it 'should include all data when invoked on the base model class' do
              result = User.registrations_report.to_a
        
       @@ -38,7 +59,9 @@ describe Saulabs::Reportable do
        end
        
        class User < ActiveRecord::Base
       +
          reportable :registrations, :limit => 10
       +
        end
        
        class SpecialUser < User; end