Commit 7649725c4838acf236d137dd945e862b4b4d7cf5

Authored by Rafael Manzo
1 parent 2f2ddebb

MetricConfigurations inherits from KalibroClient class

app/controllers/base_metric_configurations_controller.rb
@@ -16,7 +16,7 @@ class BaseMetricConfigurationsController < ApplicationController @@ -16,7 +16,7 @@ class BaseMetricConfigurationsController < ApplicationController
16 def show 16 def show
17 if metric_configuration 17 if metric_configuration
18 @reading_group = ReadingGroup.find(metric_configuration.reading_group_id) 18 @reading_group = ReadingGroup.find(metric_configuration.reading_group_id)
19 - @mezuro_ranges = metric_configuration.mezuro_ranges 19 + @mezuro_ranges = metric_configuration.kalibro_ranges
20 metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i 20 metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i
21 else 21 else
22 raise NotImplementedError 22 raise NotImplementedError
app/models/metric_configuration.rb
1 -require "validators/code_uniqueness_validator.rb"  
2 -require "validators/name_script_presence_validator.rb"  
3 -  
4 -class MetricConfiguration < KalibroGatekeeperClient::Entities::MetricConfiguration  
5 - include KalibroRecord  
6 -  
7 - attr_accessor :code, :weight, :aggregation_form  
8 -  
9 - validates :code, presence: true, code_uniqueness: true  
10 - validates :weight, presence: true, numericality: { greater_than: 0 }  
11 - validates :aggregation_form, presence: true, unless: "metric.compound == true"  
12 - validates_with NameScriptPresenceValidator, unless: "metric.compound == false"  
13 -  
14 - def mezuro_ranges  
15 - MezuroRange.ranges_of self.id  
16 - end  
17 -end 1 +class MetricConfiguration < KalibroClient::Configurations::MetricConfiguration; end
app/models/validators/code_uniqueness_validator.rb
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -class CodeUniquenessValidator < ActiveModel::EachValidator  
2 - def validate_each(record, attribute, value)  
3 - record.class.metric_configurations_of(record.configuration_id).each do |metric_configuration|  
4 - if metric_configuration.code == value && metric_configuration.id != record.id  
5 - record.errors[attribute] << "There is already a #{record.class} with #{attribute} #{value}! Please, choose another one."  
6 - break  
7 - end  
8 - end  
9 - end  
10 -end  
11 \ No newline at end of file 0 \ No newline at end of file
app/models/validators/name_script_presence_validator.rb
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -class NameScriptPresenceValidator < ActiveModel::Validator  
2 - def validate(record)  
3 - if record.metric.name.strip.empty?  
4 - record.errors[:name] << "can't be blank"  
5 - end  
6 - if record.metric.script.strip.empty?  
7 - record.errors[:script] << "can't be blank"  
8 - end  
9 - end  
10 -end  
spec/controllers/base_metric_configurations_controller_spec.rb
@@ -119,7 +119,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do @@ -119,7 +119,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do
119 before :each do 119 before :each do
120 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group) 120 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group)
121 subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) 121 subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration)
122 - MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([mezuro_range]) 122 + metric_configuration.expects(:kalibro_ranges).returns([mezuro_range])
123 123
124 get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id 124 get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id
125 end 125 end
spec/controllers/compound_metric_configurations_controller_spec.rb
@@ -75,7 +75,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -75,7 +75,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
75 before :each do 75 before :each do
76 ReadingGroup.expects(:find).with(compound_metric_configuration.reading_group_id).returns(reading_group) 76 ReadingGroup.expects(:find).with(compound_metric_configuration.reading_group_id).returns(reading_group)
77 subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration) 77 subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration)
78 - MezuroRange.expects(:ranges_of).with(compound_metric_configuration.id).returns([mezuro_range]) 78 + compound_metric_configuration.expects(:kalibro_ranges).returns([mezuro_range])
79 79
80 get :show, mezuro_configuration_id: compound_metric_configuration.configuration_id.to_s, id: compound_metric_configuration.id 80 get :show, mezuro_configuration_id: compound_metric_configuration.configuration_id.to_s, id: compound_metric_configuration.id
81 end 81 end
spec/controllers/metric_configurations_controller_spec.rb
@@ -96,7 +96,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -96,7 +96,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
96 before :each do 96 before :each do
97 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group) 97 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group)
98 subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) 98 subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration)
99 - MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([mezuro_range]) 99 + metric_configuration.expects(:kalibro_ranges).returns([mezuro_range])
100 100
101 get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id 101 get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id
102 end 102 end
spec/models/metric_configuration_spec.rb
@@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
1 -require 'rails_helper'  
2 -  
3 -describe MetricConfiguration, :type => :model do  
4 - subject {FactoryGirl.build(:metric_configuration)}  
5 -  
6 - describe 'methods' do  
7 - describe 'mezuro_ranges' do  
8 - let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }  
9 - before :each do  
10 - MezuroRange.expects(:ranges_of).with(subject.id).returns([mezuro_range])  
11 - end  
12 -  
13 - it 'should returns a list with its ranges' do  
14 - expect(subject.mezuro_ranges).to eq([mezuro_range])  
15 - end  
16 - end  
17 - end  
18 -  
19 - describe 'validations' do  
20 -  
21 - context 'active model validations' do  
22 - before :each do  
23 - MetricConfiguration.expects(:metric_configurations_of).at_least_once.returns([])  
24 - end  
25 -  
26 - it { is_expected.to validate_presence_of(:code) }  
27 - it { is_expected.to validate_presence_of(:weight) }  
28 - it { is_expected.to validate_numericality_of(:weight) }  
29 - it { is_expected.to validate_presence_of(:aggregation_form) }  
30 - end  
31 -  
32 - context 'code validations' do  
33 - before :each do  
34 - MetricConfiguration.expects(:request).returns(42)  
35 - end  
36 -  
37 - it 'should validate uniqueness' do  
38 - CodeUniquenessValidator.any_instance.expects(:validate_each).with(subject, :code, subject.code)  
39 - subject.save  
40 - end  
41 - end  
42 - end  
43 -end  
spec/models/validators/code_uniqueness_validator_spec.rb
@@ -1,32 +0,0 @@ @@ -1,32 +0,0 @@
1 -require 'rails_helper'  
2 -  
3 -describe CodeUniquenessValidator, :type => :model do  
4 - describe 'methods' do  
5 - describe 'validate_each' do  
6 - context 'without saved metric_configurations' do  
7 - before :each do  
8 - MetricConfiguration.expects(:metric_configurations_of).returns([])  
9 - MetricConfiguration.expects(:request).returns(42)  
10 - end  
11 -  
12 - subject { FactoryGirl.build(:metric_configuration) }  
13 - it 'should contain no errors' do  
14 - subject.save  
15 - expect(subject.errors).to be_empty  
16 - end  
17 - end  
18 -  
19 - context 'with code already taken by another metric_configuration' do  
20 - before :each do  
21 - @subject = FactoryGirl.build(:metric_configuration)  
22 - MetricConfiguration.expects(:metric_configurations_of).with(@subject.configuration_id).returns([FactoryGirl.build(:metric_configuration, id: @subject.id + 1)])  
23 - end  
24 -  
25 - it 'should contain errors' do  
26 - @subject.save  
27 - expect(@subject.errors[:code]).to eq(["There is already a MetricConfiguration with code #{@subject.code}! Please, choose another one."])  
28 - end  
29 - end  
30 - end  
31 - end  
32 -end  
spec/models/validators/name_script_validator_spec.rb
@@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
1 -require 'rails_helper'  
2 -  
3 -describe NameScriptPresenceValidator, :type => :model do  
4 - describe 'methods' do  
5 - describe 'validate' do  
6 - let!(:compound_metric_configuration){ FactoryGirl.build(:compound_metric_configuration) }  
7 -  
8 - before :each do  
9 - CodeUniquenessValidator.any_instance.stubs(:validate_each)  
10 - end  
11 -  
12 - context 'with blank name' do  
13 - before :each do  
14 - compound_metric_configuration.metric.name = ""  
15 - end  
16 -  
17 - it 'is expected to return a error for the name field' do  
18 - compound_metric_configuration.save  
19 - expect(compound_metric_configuration.errors[:name]).to include("can't be blank")  
20 - end  
21 -  
22 - context 'with blank script' do  
23 - before :each do  
24 - compound_metric_configuration.metric.script = ""  
25 - end  
26 -  
27 - it 'is expected to return a error for the name and script fields' do  
28 - compound_metric_configuration.save  
29 - expect(compound_metric_configuration.errors[:name]).to include("can't be blank")  
30 - expect(compound_metric_configuration.errors[:script]).to include("can't be blank")  
31 - end  
32 - end  
33 - end  
34 - end  
35 - end  
36 -end  
37 \ No newline at end of file 0 \ No newline at end of file