From 5d2256980a40311dd3563882c68e8a28eac2a1ee Mon Sep 17 00:00:00 2001 From: Rafael Reggiani Manzo Date: Wed, 6 Nov 2013 15:39:50 -0200 Subject: [PATCH] Refactored new graphic methods --- Gemfile | 2 +- Gemfile.lock | 6 +++--- app/models/module_result.rb | 28 +++++++++++++--------------- spec/factories/date_module_results.rb | 6 ++++++ spec/factories/module_results.rb | 2 +- spec/models/module_result_spec.rb | 28 ++++++++++++++++++++++++++-- 6 files changed, 50 insertions(+), 22 deletions(-) create mode 100644 spec/factories/date_module_results.rb diff --git a/Gemfile b/Gemfile index 97dd4ef..bcc2164 100644 --- a/Gemfile +++ b/Gemfile @@ -37,7 +37,7 @@ gem 'jbuilder', '~> 1.2' gem 'devise', '~> 3.2.0' # Kalibro integration -gem 'kalibro_entities', "~> 0.0.1.rc5" +gem 'kalibro_entities', "~> 0.0.1.rc6" # PostgreSQL integration gem "pg", "~> 0.17.0" diff --git a/Gemfile.lock b/Gemfile.lock index 7064bd3..732926f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -103,8 +103,8 @@ GEM railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) json (1.8.1) - kalibro_entities (0.0.1.rc5) - activesupport (~> 4.0.0) + kalibro_entities (0.0.1.rc6) + activesupport (~> 4.0.1) savon-ng-1.6 (~> 2.4.1) konacha (3.0.0) actionpack (>= 3.1, < 5) @@ -259,7 +259,7 @@ DEPENDENCIES factory_girl_rails (~> 4.3.0) jbuilder (~> 1.2) jquery-rails - kalibro_entities (~> 0.0.1.rc5) + kalibro_entities (~> 0.0.1.rc6) konacha (~> 3.0.0) mocha modernizr-rails diff --git a/app/models/module_result.rb b/app/models/module_result.rb index 51fec94..29a2b83 100644 --- a/app/models/module_result.rb +++ b/app/models/module_result.rb @@ -5,24 +5,22 @@ class ModuleResult < KalibroEntities::Entities::ModuleResult KalibroEntities::Entities::MetricResult.metric_results_of(@id) end - def history_of() - KalibroEntities::Entities::ModuleResult.history_of(@id).map { |date_module_result| DateModuleResult.new date_module_result.to_hash } + def history + self.class.history_of(@id).map { |date_module_result| DateModuleResult.new date_module_result.to_hash } end - def history_of_grades_of(metric_name) - history_of_grades = Hash.new + def metric_history(name) + grade_history = Hash.new - date_module_result_list = history_of(@id) - date_module_result_list.each do |date_module_result| - date_module_result.module_result.metric_results.each do |metric_result| - if metric_result.metric_configuration_snapshot.metric.name == metric_name then - metric_grade = metric_result.metric_configuration_snapshot.grade - break - end - end - history_of_grades[date_module_result.date] = metric_grade - end - history_of_grades + history.each { |date_module_result| grade_history[date_module_result.date] = + find_grade_by_metric_name(date_module_result.module_result.metric_results, name) } + + grade_history end + private + + def find_grade_by_metric_name(metric_results, name) + metric_results.each { |metric_result| return metric_result.value if metric_result.metric_configuration_snapshot.metric.name == name } + end end \ No newline at end of file diff --git a/spec/factories/date_module_results.rb b/spec/factories/date_module_results.rb new file mode 100644 index 0000000..04bd141 --- /dev/null +++ b/spec/factories/date_module_results.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :date_module_result, class: DateModuleResult do + date "2011-10-20T18:26:43.151+00:00" + module_result {FactoryGirl.build(:module_result)} + end +end \ No newline at end of file diff --git a/spec/factories/module_results.rb b/spec/factories/module_results.rb index db0dd0f..b1bcdc6 100644 --- a/spec/factories/module_results.rb +++ b/spec/factories/module_results.rb @@ -7,7 +7,7 @@ FactoryGirl.define do height "6" end - factory :root_module_result, class: ModuleResult do + factory :root_module_result, class: ModuleResult do id "21" self.module { FactoryGirl.build(:module) } grade "6.0" diff --git a/spec/models/module_result_spec.rb b/spec/models/module_result_spec.rb index 4cf4cf3..061590e 100644 --- a/spec/models/module_result_spec.rb +++ b/spec/models/module_result_spec.rb @@ -2,14 +2,38 @@ require 'spec_helper' describe ModuleResult do describe 'methods' do + subject { FactoryGirl.build(:module_result) } + describe 'metric_results' do - subject { FactoryGirl.build(:module_result) } - it 'should call the metric_results_of method' do KalibroEntities::Entities::MetricResult.expects(:metric_results_of).with(subject.id).returns(nil) subject.metric_results end end + + describe 'history' do + before :each do + ModuleResult.expects(:history_of).with(subject.id).returns([FactoryGirl.build(:date_module_result)]) + end + + it 'should return a array of DateModuleResults' do + subject.history.first.should be_a(DateModuleResult) + end + end + + describe 'metric_history' do + let(:date_module_result) {FactoryGirl.build(:date_module_result)} + let(:metric_result) {FactoryGirl.build(:metric_result)} + + before :each do + subject.expects(:history).returns([date_module_result]) + ModuleResult.any_instance.expects(:metric_results).returns([metric_result]) + end + + it 'should return the history for the given metric name' do + subject.metric_history(metric_result.metric_configuration_snapshot.metric.name).should eq({date_module_result.date => metric_result.value}) + end + end end end \ No newline at end of file -- libgit2 0.21.2