-
Notifications
You must be signed in to change notification settings - Fork 79
/
report_spec.rb
86 lines (66 loc) · 2.02 KB
/
report_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
require 'spec_helper'
describe Dossier::Report do
let(:report) { TestReport.new(:foo => 'bar') }
it "has a report name" do
TestReport.report_name.should eq('test')
end
describe "report instances" do
let(:report_with_custom_header) do
Class.new(Dossier::Report) do
def format_header(header)
{
'generic' => 'customized'
}[header.to_s] || super
end
end.new
end
it "takes options when initializing" do
report.options.should eq('foo' => 'bar')
end
it 'generates column headers' do
report.format_header('Foo').should eq 'Foo'
end
it 'allows for column header customization' do
report_with_custom_header.format_header(:generic).should eq 'customized'
end
it "has a formatted title" do
expect(report.formatted_title).to eq 'Test Report'
end
end
describe "callbacks" do
let(:report) do
Class.new(Dossier::Report) do
set_callback :build_query, :before, :before_test_for_build_query
set_callback :execute, :after, :after_test_for_execute
def sql; ''; end
end.new
end
it "has callbacks for build_query" do
report.should_receive(:before_test_for_build_query)
report.query
end
it "has callbacks for execute" do
Dossier.client.stub(:execute).and_return([])
report.stub(:before_test_for_build_query)
report.should_receive(:after_test_for_execute)
report.run
end
end
it "requires you to override the query method" do
expect {report.sql}.to raise_error(NotImplementedError)
end
describe "DSL" do
describe "run" do
it "will execute the generated sql query" do
report = EmployeeReport.new
Dossier.client.should_receive(:execute).with(report.query, 'EmployeeReport').and_return([])
report.run
end
it "will cache the results of the run in `results`" do
report = EmployeeReport.new
report.run
report.results.should_not be_nil
end
end
end
end