Last active
December 19, 2015 06:29
-
-
Save IdahoEv/5911590 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'spec_helper' | |
describe CtrReportPresenter do | |
describe "when given date params, a query class, and a grouper class" do | |
let :start_date do | |
(Time.now - 10.days).beginning_of_day | |
end | |
let :end_date do | |
Time.now.beginning_of_day | |
end | |
let :date_range_query do | |
mock(DateRangeQuery) | |
end | |
it "should create a date query object" do | |
DateRangeQuery.should_receive(:new).with(start_date, end_date).and_return(date_range_query) | |
date_range_query.should_receive(:query).with # LEFT OFF HERE | |
CtrReportPresenter.new(:start_date => start_date, :end_date => end_date) | |
end | |
it "should create a date presenter object" | |
it "should create and run instance of the query class" | |
it "should instantiate the grouper class with the results of the query" | |
it "rows should return something that responds to each" | |
end | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CtrReportPresenter | |
def initialize(options) | |
@query_class = options[:query_class] | |
@grouper_class = options[:grouper_class] | |
build(options) | |
end | |
def build(options) | |
@date_query = DateRangeQuery.new( | |
options[:start_date], | |
options[:end_date] | |
) | |
end | |
end |
class PublisherController
def show
dates = DateRangeQuery.new(params)
grouper = PublisherCtrGrouper.new
@presenter = CtrReportPresenter.new(dates, grouper)
end
end
class AffiliateController
def show
dates = DateRangeQuery.new(params)
grouper = AffiliateCtrGrouper.new
@presenter = CtrReportPresenter.new(dates, grouper)
end
end
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
let :date_range do
double(DateRangeQuery) do |date_range|
date_range.stub(:query).and_return([])
end
end
let :grouper do
double(Grouper).tap do |grouper|
grouper.stub(:group_rows).with(Array).and_return([])
end
end
let :presenter do
CtrReportPresenter.new(date_range, grouper)
end
it "rows should return something that responds to each" do
presenter.rows.should respond_to(:each)
end