diff --git a/plugins/mezuro/lib/kalibro/client/project_result_client.rb b/plugins/mezuro/lib/kalibro/client/project_result_client.rb deleted file mode 100644 index 8733c41..0000000 --- a/plugins/mezuro/lib/kalibro/client/project_result_client.rb +++ /dev/null @@ -1,46 +0,0 @@ -class Kalibro::Client::ProjectResultClient - - # TODO test this - def self.last_result(project_name) - new.last_result(project_name) - end - - def initialize - @port = Kalibro::Client::Port.new('ProjectResult') - end - - def has_results_for(project_name) - @port.request(:has_results_for, {:project_name => project_name})[:has_results] - end - - def has_results_before(project_name, date) - @port.request(:has_results_before, {:project_name => project_name, :date => date})[:has_results] - end - - def has_results_after(project_name, date) - @port.request(:has_results_after, {:project_name => project_name, :date => date})[:has_results] - end - - def first_result(project_name) - hash = @port.request(:get_first_result_of, {:project_name => project_name})[:project_result] - Kalibro::Entities::ProjectResult.from_hash(hash) - end - - def last_result(project_name) - hash = @port.request(:get_last_result_of, {:project_name => project_name})[:project_result] - Kalibro::Entities::ProjectResult.from_hash(hash) - end - - def first_result_after(project_name, date) - request_body = {:project_name => project_name, :date => date} - hash = @port.request(:get_first_result_after, request_body)[:project_result] - Kalibro::Entities::ProjectResult.from_hash(hash) - end - - def last_result_before(project_name, date) - request_body = {:project_name => project_name, :date => date} - hash = @port.request(:get_last_result_before, request_body)[:project_result] - Kalibro::Entities::ProjectResult.from_hash(hash) - end - -end \ No newline at end of file diff --git a/plugins/mezuro/lib/kalibro/entities/module_node.rb b/plugins/mezuro/lib/kalibro/entities/module_node.rb deleted file mode 100644 index 22880c5..0000000 --- a/plugins/mezuro/lib/kalibro/entities/module_node.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Kalibro::Entities::ModuleNode < Kalibro::Entities::Entity - - attr_accessor :module, :child - - def module=(value) - @module = to_entity(value, Kalibro::Entities::Module) - end - - def child=(value) - @child = to_entity_array(value, Kalibro::Entities::ModuleNode) - end - - def children - @child - end - - def children=(children) - @child = children - end - -end diff --git a/plugins/mezuro/lib/kalibro/entities/project_result.rb b/plugins/mezuro/lib/kalibro/entities/project_result.rb deleted file mode 100644 index e08663c..0000000 --- a/plugins/mezuro/lib/kalibro/entities/project_result.rb +++ /dev/null @@ -1,76 +0,0 @@ -class Kalibro::Entities::ProjectResult < Kalibro::Entities::Entity - - attr_accessor :project, :date, :load_time, :analysis_time, :source_tree, :collect_time - - def project=(value) - @project = to_entity(value, Kalibro::Entities::Project) - end - - def date=(value) - @date = value - @date = DateTime.parse(value) if value.is_a?(String) - end - - def load_time=(value) - @load_time = value.to_i - end - - def collect_time=(value) - @collect_time = value.to_i - end - - def analysis_time=(value) - @analysis_time = value.to_i - end - - def source_tree=(value) - @source_tree = to_entity(value, Kalibro::Entities::ModuleNode) - end - - def formatted_load_time - format_milliseconds(@load_time) - end - - def formatted_analysis_time - format_milliseconds(@analysis_time) - end - - def format_milliseconds(value) - seconds = value.to_i/1000 - hours = seconds/3600 - seconds -= hours * 3600 - minutes = seconds/60 - seconds -= minutes * 60 - "#{format(hours)}:#{format(minutes)}:#{format(seconds)}" - end - - def format(amount) - ('%2d' % amount).sub(/\s/, '0') - end - - def node_of(module_name) - if module_name.nil? or module_name == project.name - node = source_tree - else - node = get_node(module_name) - end - end - - def get_node(module_name) - path = Kalibro::Entities::Module.parent_names(module_name) - parent = @source_tree - path.each do |node_name| - parent = get_leaf_from(parent, node_name) - end - return parent - end - - private - def get_leaf_from(node, module_name) - node.children.each do |child_node| - return child_node if child_node.module.name == module_name - end - nil - end - -end diff --git a/plugins/mezuro/lib/kalibro/model.rb b/plugins/mezuro/lib/kalibro/model.rb index 8c8d6a0..5a58763 100644 --- a/plugins/mezuro/lib/kalibro/model.rb +++ b/plugins/mezuro/lib/kalibro/model.rb @@ -64,5 +64,10 @@ class Kalibro::Model def self.is_valid?(field) field.to_s[0] != '@' and field != :attributes! and (field.to_s =~ /xsi/).nil? end + + def self.date_with_milliseconds(date) + milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s + date.to_s[0..18] + milliseconds + date.to_s[19..-1] + end end diff --git a/plugins/mezuro/lib/kalibro/module_node.rb b/plugins/mezuro/lib/kalibro/module_node.rb new file mode 100644 index 0000000..b71978d --- /dev/null +++ b/plugins/mezuro/lib/kalibro/module_node.rb @@ -0,0 +1,21 @@ +class Kalibro::ModuleNode < Kalibro::Model + + attr_accessor :module, :child + + def module=(value) + @module = Kalibro::Module.to_object value + end + + def child=(value) + @child = Kalibro::ModuleNode.to_objects_array value + end + + def children + @child + end + + def children=(children) + @child = children + end + +end diff --git a/plugins/mezuro/lib/kalibro/module_result.rb b/plugins/mezuro/lib/kalibro/module_result.rb index 3f74b11..43782c4 100644 --- a/plugins/mezuro/lib/kalibro/module_result.rb +++ b/plugins/mezuro/lib/kalibro/module_result.rb @@ -61,11 +61,4 @@ class Kalibro::ModuleResult < Kalibro::Model @compound_metric_with_error = compound_metrics_with_error end - private - - def self.date_with_milliseconds(date) - milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s - date.to_s[0..18] + milliseconds + date.to_s[19..-1] - end - end diff --git a/plugins/mezuro/lib/kalibro/project_result.rb b/plugins/mezuro/lib/kalibro/project_result.rb index 45e1c66..618ebdd 100644 --- a/plugins/mezuro/lib/kalibro/project_result.rb +++ b/plugins/mezuro/lib/kalibro/project_result.rb @@ -3,35 +3,35 @@ class Kalibro::ProjectResult < Kalibro::Model attr_accessor :project, :date, :load_time, :analysis_time, :source_tree, :collect_time def self.last_result(project_name) - last_result = request(:get_last_result_of, {:project_name => project_name})[:project_result] + last_result = request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] new last_result end def self.first_result(project_name) - first_result = request(:get_first_result_of, {:project_name => project_name})[:project_result] + first_result = request('ProjectResult',:get_first_result_of, {:project_name => project_name})[:project_result] new first_result end def self.first_result_after(project_name, date) - first_result_after = request(:get_first_result_after, {:project_name => project_name, :date => date})[:project_result] + first_result_after = request('ProjectResult',:get_first_result_after, {:project_name => project_name, :date => date})[:project_result] new first_result_after end def self.last_result_before(project_name, date) - last_result_before = request(:get_last_result_before, {:project_name => project_name, :date => date})[:project_result] + last_result_before = request('ProjectResult',:get_last_result_before, {:project_name => project_name, :date => date})[:project_result] new last_result_before end def self.has_results?(project_name) - request(:has_results_for, {:project_name => project_name})[:has_results] + request('ProjectResult',:has_results_for, {:project_name => project_name})[:has_results] end def self.has_results_before?(project_name, date) - request(:has_results_before, {:project_name => project_name, :date => date})[:has_results] + request('ProjectResult',:has_results_before, {:project_name => project_name, :date => date})[:has_results] end def self.has_results_after?(project_name, date) - request(:has_results_after, {:project_name => project_name, :date => date})[:has_results] + request('ProjectResult',:has_results_after, {:project_name => project_name, :date => date})[:has_results] end def project=(value) @@ -54,9 +54,8 @@ class Kalibro::ProjectResult < Kalibro::Model @analysis_time = value.to_i end - #FIXME mudar a atribuição depois que refatorarmos o module_result client def source_tree=(value) - @source_tree = value.kind_of?(Hash) ? Kalibro::Entities::ModuleNode.from_hash(value) : value + @source_tree = value.kind_of?(Hash) ? Kalibro::ModuleNode.new(value) : value end def formatted_load_time @@ -88,9 +87,8 @@ class Kalibro::ProjectResult < Kalibro::Model end end -#FIXME mudar a atribuição depois que refatorarmos o module_result client def get_node(module_name) - path = Kalibro::Entities::Module.parent_names(module_name) + path = Kalibro::Module.parent_names(module_name) parent = @source_tree path.each do |node_name| parent = get_leaf_from(parent, node_name) @@ -100,17 +98,6 @@ class Kalibro::ProjectResult < Kalibro::Model private - def self.project_result - endpoint = "ProjectResult" - 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 = project_result.request(:kalibro, action) { soap.body = request_body } - response.to_hash["#{action}_response".to_sym] - end - def get_leaf_from(node, module_name) node.children.each do |child_node| return child_node if child_node.module.name == module_name diff --git a/plugins/mezuro/test/fixtures/module_fixtures.rb b/plugins/mezuro/test/fixtures/module_fixtures.rb index 76aa59e..c3ed98a 100644 --- a/plugins/mezuro/test/fixtures/module_fixtures.rb +++ b/plugins/mezuro/test/fixtures/module_fixtures.rb @@ -1,11 +1,14 @@ class ModuleFixtures def self.module - entity = Kalibro::Module.new module_hash + Kalibro::Module.new module_hash end def self.module_hash - {:name => 'Qt-Calculator', :granularity => 'APPLICATION'} + { + :name => 'Qt-Calculator', + :granularity => 'APPLICATION' + } end end diff --git a/plugins/mezuro/test/fixtures/module_node_fixtures.rb b/plugins/mezuro/test/fixtures/module_node_fixtures.rb index 6dd0fc8..1c94081 100644 --- a/plugins/mezuro/test/fixtures/module_node_fixtures.rb +++ b/plugins/mezuro/test/fixtures/module_node_fixtures.rb @@ -1,34 +1,47 @@ +require File.dirname(__FILE__) + '/module_fixtures' + class ModuleNodeFixtures - def self.qt_calculator_tree - node = Kalibro::Entities::ModuleNode.new - node.module = ModuleFixtures.qt_calculator - org_node = new_node('org', 'PACKAGE') - org_node.children = [new_node('org.Window', 'CLASS')] - node.children = [org_node, new_node('Dialog', 'CLASS'), new_node('main', 'CLASS')] - node + def self.module_node + Kalibro::ModuleNode.new module_node_hash end - def self.qt_calculator_tree_hash - {:module => ModuleFixtures.qt_calculator_hash, - :child => [ - {:module => {:name => 'org', :granularity => 'PACKAGE'}, - :child => [{:module => {:name => 'org.Window', :granularity => 'CLASS'}}]}, - {:module => {:name => 'Dialog', :granularity => 'CLASS'}}, - {:module => {:name => 'main', :granularity => 'CLASS'}} - ] + def self.module_node_hash + { + :module => ModuleFixtures.module_hash,:attributes! => {:module => { + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type' => 'kalibro:moduleXml' }}, + :child => [{ + :module => { + :name => 'org', + :granularity => 'PACKAGE' + },:attributes! => {:module => { + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type' => 'kalibro:moduleXml' }}, + :child => [{ + :module => { + :name => 'org.Window', + :granularity => 'CLASS' + },:attributes! => {:module => { + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type' => 'kalibro:moduleXml' }} + }] + },{ + :module => { + :name => 'Dialog', + :granularity => 'CLASS' + },:attributes! => {:module => { + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type' => 'kalibro:moduleXml' }} + },{ + :module => { + :name => 'main', + :granularity => 'CLASS' + },:attributes! => {:module => { + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type' => 'kalibro:moduleXml' }} + }] } end - private - - def self.new_node(name, granularity) - the_module = Kalibro::Entities::Module.new - the_module.name = name - the_module.granularity = granularity - node = Kalibro::Entities::ModuleNode.new - node.module = the_module - node - end - end diff --git a/plugins/mezuro/test/fixtures/project_result_fixtures.rb b/plugins/mezuro/test/fixtures/project_result_fixtures.rb index 196bb50..9ac837a 100644 --- a/plugins/mezuro/test/fixtures/project_result_fixtures.rb +++ b/plugins/mezuro/test/fixtures/project_result_fixtures.rb @@ -4,21 +4,19 @@ require File.dirname(__FILE__) + '/module_result_fixtures' class ProjectResultFixtures - def self.qt_calculator - result = Kalibro::Entities::ProjectResult.new - result.project = ProjectFixtures.project - result.date = ModuleResultFixtures.create.date - result.load_time = 14878 - result.analysis_time = 1022 - result.source_tree = ModuleNodeFixtures.qt_calculator_tree - result.collect_time = 14878 - result + def self.project_result + Kalibro::ProjectResult.new project_result_hash end - def self.qt_calculator_hash - {:project => ProjectFixtures.project_hash, :date => ModuleResultFixtures.create_hash[:date], - :load_time => 14878, :analysis_time => 1022, :source_tree => ModuleNodeFixtures.qt_calculator_tree_hash, - :collect_time => 14878} + def self.project_result_hash + { + :project => ProjectFixtures.project_hash, + :date => ModuleResultFixtures.module_result_hash[:date], + :load_time => 14878, + :analysis_time => 1022, + :source_tree => ModuleNodeFixtures.module_node_hash, + :collect_time => 14878 + } end end diff --git a/plugins/mezuro/test/unit/kalibro/client/project_result_client_test.rb b/plugins/mezuro/test/unit/kalibro/client/project_result_client_test.rb deleted file mode 100644 index 334366c..0000000 --- a/plugins/mezuro/test/unit/kalibro/client/project_result_client_test.rb +++ /dev/null @@ -1,58 +0,0 @@ -require "test_helper" - -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" - -class ProjectResultClientTest < ActiveSupport::TestCase - - def setup - @port = mock - Kalibro::Client::Port.expects(:new).with('ProjectResult').returns(@port) - @client = Kalibro::Client::ProjectResultClient.new - - @result = ProjectResultFixtures.qt_calculator - @project_name = @result.project.name - @date = @result.date - @flag = DateTime.now.sec % 2 == 0 - - @request = {:project_name => @project_name} - @request_with_date = {:project_name => @project_name, :date => @date} - @flag_response = {:has_results => @flag} - @result_response = {:project_result => @result.to_hash} - end - - should 'retrieve if project has results' do - @port.expects(:request).with(:has_results_for, @request).returns(@flag_response) - assert_equal @flag, @client.has_results_for(@project_name) - end - - should 'retrieve if project has results before date' do - @port.expects(:request).with(:has_results_before, @request_with_date).returns(@flag_response) - assert_equal @flag, @client.has_results_before(@project_name, @date) - end - - should 'retrieve if project has results after date' do - @port.expects(:request).with(:has_results_after, @request_with_date).returns(@flag_response) - assert_equal @flag, @client.has_results_after(@project_name, @date) - end - - should 'get first result of project' do - @port.expects(:request).with(:get_first_result_of, @request).returns(@result_response) - assert_equal @result, @client.first_result(@project_name) - end - - should 'get last result of project' do - @port.expects(:request).with(:get_last_result_of, @request).returns(@result_response) - assert_equal @result, @client.last_result(@project_name) - end - - should 'get first result of project after date' do - @port.expects(:request).with(:get_first_result_after, @request_with_date).returns(@result_response) - assert_equal @result, @client.first_result_after(@project_name, @date) - end - - should 'get last result of project before date' do - @port.expects(:request).with(:get_last_result_before, @request_with_date).returns(@result_response) - assert_equal @result, @client.last_result_before(@project_name, @date) - end - -end \ No newline at end of file diff --git a/plugins/mezuro/test/unit/kalibro/entities/module_node_test.rb b/plugins/mezuro/test/unit/kalibro/entities/module_node_test.rb deleted file mode 100644 index f4d8a36..0000000 --- a/plugins/mezuro/test/unit/kalibro/entities/module_node_test.rb +++ /dev/null @@ -1,20 +0,0 @@ -require "test_helper" - -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_node_fixtures" - -class ModuleNodeTest < ActiveSupport::TestCase - - def setup - @hash = ModuleNodeFixtures.qt_calculator_tree_hash - @node = ModuleNodeFixtures.qt_calculator_tree - end - - should 'create module node from hash' do - assert_equal @node, Kalibro::Entities::ModuleNode.from_hash(@hash) - end - - should 'convert children hash to array of ModuleNode' do - assert_equal @hash, @node.to_hash - end - -end \ No newline at end of file diff --git a/plugins/mezuro/test/unit/kalibro/entities/project_result_test.rb b/plugins/mezuro/test/unit/kalibro/entities/project_result_test.rb deleted file mode 100644 index db35bec..0000000 --- a/plugins/mezuro/test/unit/kalibro/entities/project_result_test.rb +++ /dev/null @@ -1,49 +0,0 @@ -require "test_helper" - -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" - -class ProjectResultTest < ActiveSupport::TestCase - - def setup - @hash = ProjectResultFixtures.qt_calculator_hash - @result = ProjectResultFixtures.qt_calculator - end - - should 'create project result from hash' do - assert_equal @result, Kalibro::Entities::ProjectResult.from_hash(@hash) - end - - should 'convert project result to hash' do - assert_equal @hash, @result.to_hash - end - - should 'retrieve formatted load time' do - assert_equal '00:00:14', @result.formatted_load_time - end - - should 'retrieve formatted analysis time' do - assert_equal '00:00:01', @result.formatted_analysis_time - end - - should 'retrieve module node' do - node = @result.get_node("main") - assert_equal @hash[:source_tree][:child][2], node.to_hash - end - - should 'retrive complex module' do - node = @result.get_node("org.Window") - assert_equal @hash[:source_tree][:child][0][:child].first, node.to_hash - end - - should 'return source tree node when nil is given' do - assert_equal @hash[:source_tree], @result.node_of(nil).to_hash - end - - should 'return source tree node when project name is given' do - assert_equal @hash[:source_tree], @result.node_of(@result.project.name).to_hash - end - - should 'return correct node when module name is given' do - assert_equal @hash[:source_tree][:child][2], @result.node_of("main").to_hash - end -end diff --git a/plugins/mezuro/test/unit/kalibro/module_node_test.rb b/plugins/mezuro/test/unit/kalibro/module_node_test.rb new file mode 100644 index 0000000..d507452 --- /dev/null +++ b/plugins/mezuro/test/unit/kalibro/module_node_test.rb @@ -0,0 +1,19 @@ +require "test_helper" +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_node_fixtures" + +class ModuleNodeTest < ActiveSupport::TestCase + + def setup + @hash = ModuleNodeFixtures.module_node_hash + @node = ModuleNodeFixtures.module_node + end + + should 'create module node from hash' do + assert_equal( @node.child[0].module.name, Kalibro::ModuleNode.new(@hash).child[0].module.name) + end + + should 'convert children hash to array of ModuleNode' do + assert_equal @hash, @node.to_hash + end + +end diff --git a/plugins/mezuro/test/unit/kalibro/project_result_test.rb b/plugins/mezuro/test/unit/kalibro/project_result_test.rb new file mode 100644 index 0000000..1b21d5b --- /dev/null +++ b/plugins/mezuro/test/unit/kalibro/project_result_test.rb @@ -0,0 +1,98 @@ +require "test_helper" + +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" + +class ProjectResultTest < ActiveSupport::TestCase + + def setup + @hash = ProjectResultFixtures.project_result_hash + @project_result = ProjectResultFixtures.project_result + +# Kalibro::Client::Port.expects(:new).with('ProjectResult').returns(@port) +# @client = Kalibro::Client::ProjectResultClient.new + + @project_name = @project_result.project.name + @date = @project_result.date +# @flag = DateTime.now.sec % 2 == 0 + + @request = {:project_name => @project_name} + @request_with_date = {:project_name => @project_name, :date => @date} +# @flag_response = {:has_results => @flag} + @result_response = {:project_result => @project_result.to_hash} + end + + should 'get last result' do + Kalibro::ProjectResult.expects(:request).with('ProjectResult',:get_last_result_of, @request).returns(@result_response) + assert_equal @project_result.analysis_time , Kalibro::ProjectResult.last_result(@project_name).analysis_time + end +=begin + should 'create project result from hash' do + assert_equal @result, Kalibro::ProjectResult.from_hash(@hash) + end + + should 'convert project result to hash' do + assert_equal @hash, @result.to_hash + end + + should 'retrieve formatted load time' do + assert_equal '00:00:14', @result.formatted_load_time + end + + should 'retrieve formatted analysis time' do + assert_equal '00:00:01', @result.formatted_analysis_time + end + + should 'retrieve module node' do + node = @result.get_node("main") + assert_equal @hash[:source_tree][:child][2], node.to_hash + end + + should 'retrive complex module' do + node = @result.get_node("org.Window") + assert_equal @hash[:source_tree][:child][0][:child].first, node.to_hash + end + + should 'return source tree node when nil is given' do + assert_equal @hash[:source_tree], @result.node_of(nil).to_hash + end + + should 'return source tree node when project name is given' do + assert_equal @hash[:source_tree], @result.node_of(@result.project.name).to_hash + end + + should 'return correct node when module name is given' do + assert_equal @hash[:source_tree][:child][2], @result.node_of("main").to_hash + end + + should 'retrieve if project has results' do + @port.expects(:request).with(:has_results_for, @request).returns(@flag_response) + assert_equal @flag, @client.has_results_for(@project_name) + end + + should 'retrieve if project has results before date' do + @port.expects(:request).with(:has_results_before, @request_with_date).returns(@flag_response) + assert_equal @flag, @client.has_results_before(@project_name, @date) + end + + should 'retrieve if project has results after date' do + @port.expects(:request).with(:has_results_after, @request_with_date).returns(@flag_response) + assert_equal @flag, @client.has_results_after(@project_name, @date) + end + + should 'get first result of project' do + @port.expects(:request).with(:get_first_result_of, @request).returns(@result_response) + assert_equal @result, @client.first_result(@project_name) + end + + + should 'get first result of project after date' do + @port.expects(:request).with(:get_first_result_after, @request_with_date).returns(@result_response) + assert_equal @result, @client.first_result_after(@project_name, @date) + end + + should 'get last result of project before date' do + @port.expects(:request).with(:get_last_result_before, @request_with_date).returns(@result_response) + assert_equal @result, @client.last_result_before(@project_name, @date) + end +=end +end -- libgit2 0.21.2