Skip to content

Instantly share code, notes, and snippets.

@IdahoEv
Last active December 19, 2015 06:29
Show Gist options
  • Save IdahoEv/5911590 to your computer and use it in GitHub Desktop.
Save IdahoEv/5911590 to your computer and use it in GitHub Desktop.
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
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
@nyarly
Copy link

nyarly commented Jul 2, 2013

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