From f933c56cec0d9320308a57855930069ccbe543cf Mon Sep 17 00:00:00 2001 From: Alessandro Palmeira + Caio Salgado Date: Wed, 11 Jul 2012 17:02:39 -0300 Subject: [PATCH] [Mezuro] Refactoring module_result. Fixed fixtures, started tests and added new methods to module_result.rb --- plugins/mezuro/lib/kalibro/module_result.rb | 29 ++++++++++++++++++++++++----- plugins/mezuro/test/fixtures/module_result_fixtures.rb | 24 ++++++++++-------------- plugins/mezuro/test/unit/kalibro/entities/module_result_test.rb | 8 ++++---- plugins/mezuro/test/unit/kalibro/module_result_test.rb | 28 ++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 23 deletions(-) create mode 100644 plugins/mezuro/test/unit/kalibro/module_result_test.rb diff --git a/plugins/mezuro/lib/kalibro/module_result.rb b/plugins/mezuro/lib/kalibro/module_result.rb index cb7ba22..09586a1 100644 --- a/plugins/mezuro/lib/kalibro/module_result.rb +++ b/plugins/mezuro/lib/kalibro/module_result.rb @@ -3,14 +3,24 @@ class Kalibro::ModuleResult < Kalibro::Model attr_accessor :module, :date, :grade, :metric_result, :compound_metric_with_error def self.find_module_result(project_name, module_name, date) - result = module_result.request( + response = request( :get_module_result, { :project_name => project_name, :module_name => module_name, :date => date_with_milliseconds(date) })[:module_result] - new result + new response + end + + def self.all_module_results(project_name, module_name) + response = request( + :get_result_history, + { + :project_name => project_name, + :module_name => module_name, + })[:module_result] + to_entity_array(response) end #FIXME change Kalibro::Entities::Module @@ -34,14 +44,23 @@ class Kalibro::ModuleResult < Kalibro::Model private - def self.module_result - endpoint = "ModuleResult" + def self.to_entity_array(value) + array = value.kind_of?(Array) ? value : [value] + array.each.collect { |element| to_entity(element) } + end + + def self.to_entity(value) + value.kind_of?(Hash) ? new(value) : value + end + + def self.client + endpoint = 'ModuleResult' service_address = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/service.yaml") Savon::Client.new("#{service_address}#{endpoint}Endpoint/?wsdl") end def self.request(action, request_body = nil) - response = module_result.request(:kalibro, action) { soap.body = request_body } + response = client.request(:kalibro, action) { soap.body = request_body } response.to_hash["#{action}_response".to_sym] end diff --git a/plugins/mezuro/test/fixtures/module_result_fixtures.rb b/plugins/mezuro/test/fixtures/module_result_fixtures.rb index 3130123..4e1618e 100644 --- a/plugins/mezuro/test/fixtures/module_result_fixtures.rb +++ b/plugins/mezuro/test/fixtures/module_result_fixtures.rb @@ -4,24 +4,20 @@ require File.dirname(__FILE__) + '/compound_metric_with_error_fixtures' class ModuleResultFixtures - def self.create - fixture = Kalibro::Entities::ModuleResult.new - fixture.module = ModuleFixtures.qt_calculator - fixture.date = DateTime.parse('Thu, 20 Oct 2011 18:26:43.151 +0000') - fixture.grade = 10.0 - fixture.metric_results = [ - MetricResultFixtures.amloc_result, - MetricResultFixtures.sc_result] - fixture.compound_metrics_with_error = [CompoundMetricWithErrorFixtures.create] - fixture + def self.module_result + fixture = Kalibro::ModuleResult.new( module_result_hash ) end - def self.create_hash - {:module => ModuleFixtures.qt_calculator_hash, - :date => '2011-10-20T18:26:43.151+00:00', :grade => 10.0, :metric_result => [ + def self.module_result_hash + { + :module => ModuleFixtures.qt_calculator_hash, + :date => '2011-10-20T18:26:43.151+00:00', + :grade => 10.0, + :metric_result => [ MetricResultFixtures.amloc_result_hash, MetricResultFixtures.sc_result_hash], - :compound_metric_with_error => [CompoundMetricWithErrorFixtures.create_hash]} + :compound_metric_with_error => [CompoundMetricWithErrorFixtures.create_hash] + } end end diff --git a/plugins/mezuro/test/unit/kalibro/entities/module_result_test.rb b/plugins/mezuro/test/unit/kalibro/entities/module_result_test.rb index 802d9d2..139c17d 100644 --- a/plugins/mezuro/test/unit/kalibro/entities/module_result_test.rb +++ b/plugins/mezuro/test/unit/kalibro/entities/module_result_test.rb @@ -5,8 +5,8 @@ require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_result_fixtures" class ModuleResultTest < ActiveSupport::TestCase def setup - @hash = ModuleResultFixtures.create_hash - @result = ModuleResultFixtures.create + @hash = ModuleResultFixtures.module_result_hash + @result = ModuleResultFixtures.module_result end should 'create module result from hash' do @@ -14,7 +14,7 @@ class ModuleResultTest < ActiveSupport::TestCase end should 'convert module result to hash' do - assert_equal @hash, @result.to_hash + assert_equal @hash, Kalibro::Entities::ModuleResult.to_hash(@result) end -end \ No newline at end of file +end diff --git a/plugins/mezuro/test/unit/kalibro/module_result_test.rb b/plugins/mezuro/test/unit/kalibro/module_result_test.rb new file mode 100644 index 0000000..d8f2797 --- /dev/null +++ b/plugins/mezuro/test/unit/kalibro/module_result_test.rb @@ -0,0 +1,28 @@ +require "test_helper" + +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_result_fixtures" + +class ModuleResultTest < ActiveSupport::TestCase + + def setup + @hash = ModuleResultFixtures.module_result_hash + @module_result = ModuleResultFixtures.module_result + end + should 'create module result' do + assert_equal @module_result.date, Kalibro::ModuleResult.new(@hash).date + end + + should 'convert module result to hash' do + assert_equal @hash, @module_result.to_hash + end + + should 'find module result' do + date_string = '2012-01-10T16:07:15.442-02:00' + date = DateTime.parse(date_string) + request_body = {:project_name => 'Qt-Calculator', :module_name => 'main', :date => date_string} + response = {:module_result => @hash} + Kalibro::ModuleResult.expects(:request).with(:get_module_result, request_body).returns(response) + assert_equal @module_result, Kalibro::ModuleResult.find_module_result('Qt-Calculator', 'main', date) + end + +end -- libgit2 0.21.2