base_metric_configurations_controller_spec.rb
5.11 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
require 'spec_helper'
class CleanInheritsFromBaseMetricConfigurationsController < BaseMetricConfigurationsController
def metric_configuration; super; end
def update_metric_configuration (new_metric_configuration); super; end
end
class InheritsFromBaseMetricConfigurationsController < BaseMetricConfigurationsController
def new
render :nothing => true
super
end
def create
render :nothing => true
super
end
def show
update_metric_configuration(@metric_configuration)
super
render :nothing => true
end
def metric_configuration
@metric_configuration
end
def update_metric_configuration (new_metric_configuration)
@metric_configuration = new_metric_configuration
end
def mezuro_ranges
@mezuro_ranges
end
def reading_group
@reading_group
end
end
describe InheritsFromBaseMetricConfigurationsController do
let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) }
before do
Rails.application.routes.draw do
resources :mezuro_configurations do
match '/metric_configurations/choose_metric' => 'metric_configurations#choose_metric', as: :choose_metric, :via => [:get]
resources :inherits_from_base_metric_configurations do
match '/metric_configurations/new' => 'metric_configurations#new', as: :new_metric_configuration, :via => [:post]
match '/metric_configurations/:id' => 'metric_configurations#update', as: :metric_configuration_update, :via => [:put]
end
end
end
end
after do
Rails.application.reload_routes!
end
describe 'new' do
before :each do
sign_in FactoryGirl.create(:user)
end
context 'when the current user owns the mezuro configuration' do
let!(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
before :each do
subject.expects(:mezuro_configuration_owner?).returns true
get :new, mezuro_configuration_id: mezuro_configuration.id
end
it { metric_configuration.should_not be_nil }
it { should respond_with(:success) }
end
context "when the current user doesn't owns the mezuro configuration" do
before :each do
get :new, mezuro_configuration_id: mezuro_configuration.id
end
it { should redirect_to(mezuro_configurations_url(mezuro_configuration.id)) }
it { should respond_with(:redirect) }
end
end
describe 'create' do
let!(:metric_configuration_params) { Hash[FactoryGirl.attributes_for(:metric_configuration).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with symbols and integers
let!(:metric_params) { Hash[FactoryGirl.attributes_for(:metric).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with symbols and integers
let(:base_tool) { FactoryGirl.build(:base_tool) }
before :each do
sign_in FactoryGirl.create(:user)
end
context 'when the current user owns the mezuro configuration' do
before :each do
subject.expects(:mezuro_configuration_owner?).returns true
end
context 'with valid fields' do
before :each do
post :create, mezuro_configuration_id: mezuro_configuration.id, metric_configuration: metric_configuration_params, base_tool_name: base_tool.name
end
it { subject.metric_configuration.should_not be_nil }
it { should respond_with(:success) }
end
end
end
describe 'show' do
let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
let(:reading_group) { FactoryGirl.build(:reading_group) }
let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }
context 'with a valid metric_configuration' do
before :each do
ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group)
MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)
MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([mezuro_range])
get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id
end
it { subject.mezuro_ranges.should_not be_nil}
it { subject.reading_group.should_not be_nil }
end
context 'with a invalid metric_configuration' do
before :each do
subject.expects(:metric_configuration).returns(false)
end
it 'should raise a NotImplementedError' do
expect { subject.show }.to raise_error(NotImplementedError)
end
end
end
context 'with a inheritance without overrides methods' do
subject { CleanInheritsFromBaseMetricConfigurationsController.new }
describe 'metric_configuration' do
it 'should raise a NotImplementedError' do
expect { subject.metric_configuration }.to raise_error(NotImplementedError)
end
end
describe 'update_metric_configuration' do
it 'should raise a NotImplementedError' do
expect { subject.update_metric_configuration(nil) }.to raise_error(NotImplementedError)
end
end
end
end