diff --git a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb index f780113..1ca216f 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb @@ -18,14 +18,14 @@ class MezuroPluginProfileController < ProfileController def project_result @content = profile.articles.find(params[:id]) date = params[:date] - @project_result = date.nil? ? @content.project_result : @content.get_date_result(date) + @project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) render :partial => 'content_viewer/project_result' end def module_result @content = profile.articles.find(params[:id]) date = params[:date] - date.nil? ? @content.project_result : @content.get_date_result(date) + date.nil? ? @content.project_result : @content.project_result_with_date(date) @module_result = @content.module_result(params[:module_name]) render :partial => 'content_viewer/module_result' end @@ -33,7 +33,7 @@ class MezuroPluginProfileController < ProfileController def project_tree @content = profile.articles.find(params[:id]) date = params[:date] - project_result = date.nil? ? @content.project_result : @content.get_date_result(date) + project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) @project_name = @content.project.name @source_tree = project_result.node_of(params[:module_name]) render :partial =>'content_viewer/source_tree' diff --git a/plugins/mezuro/lib/kalibro/module_result.rb b/plugins/mezuro/lib/kalibro/module_result.rb index 43782c4..4cbf91a 100644 --- a/plugins/mezuro/lib/kalibro/module_result.rb +++ b/plugins/mezuro/lib/kalibro/module_result.rb @@ -3,7 +3,7 @@ class Kalibro::ModuleResult < Kalibro::Model attr_accessor :module, :date, :grade, :metric_result, :compound_metric_with_error def self.find_by_project_name_and_module_name_and_date(project_name, module_name, date) - response = request( + new request( 'ModuleResult', :get_module_result, { @@ -11,7 +11,6 @@ class Kalibro::ModuleResult < Kalibro::Model :module_name => module_name, :date => date_with_milliseconds(date) })[:module_result] - new response end def self.all_by_project_name_and_module_name(project_name, module_name) @@ -20,7 +19,7 @@ class Kalibro::ModuleResult < Kalibro::Model :get_result_history, { :project_name => project_name, - :module_name => module_name, + :module_name => module_name })[:module_result] Kalibro::ModuleResult.to_objects_array(response) end diff --git a/plugins/mezuro/lib/kalibro/project.rb b/plugins/mezuro/lib/kalibro/project.rb index 8297883..0a75bbd 100644 --- a/plugins/mezuro/lib/kalibro/project.rb +++ b/plugins/mezuro/lib/kalibro/project.rb @@ -40,4 +40,8 @@ class Kalibro::Project < Kalibro::Model @repository = Kalibro::Repository.to_object value end + def error=(value) + @error = Kalibro::Error.to_object value + end + end diff --git a/plugins/mezuro/lib/kalibro/project_result.rb b/plugins/mezuro/lib/kalibro/project_result.rb index 618ebdd..841b305 100644 --- a/plugins/mezuro/lib/kalibro/project_result.rb +++ b/plugins/mezuro/lib/kalibro/project_result.rb @@ -3,35 +3,31 @@ 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('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] - new last_result + new request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] end def self.first_result(project_name) - first_result = request('ProjectResult',:get_first_result_of, {:project_name => project_name})[:project_result] - new first_result + new request('ProjectResult', :get_first_result_of, {:project_name => project_name})[:project_result] end def self.first_result_after(project_name, date) - first_result_after = request('ProjectResult',:get_first_result_after, {:project_name => project_name, :date => date})[:project_result] - new first_result_after + new request('ProjectResult', :get_first_result_after, {:project_name => project_name, :date => date})[:project_result] end def self.last_result_before(project_name, date) - last_result_before = request('ProjectResult',:get_last_result_before, {:project_name => project_name, :date => date})[:project_result] - new last_result_before + new request('ProjectResult', :get_last_result_before, {:project_name => project_name, :date => date})[:project_result] end def self.has_results?(project_name) - request('ProjectResult',: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('ProjectResult',: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('ProjectResult',: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) diff --git a/plugins/mezuro/lib/mezuro_plugin/project_content.rb b/plugins/mezuro/lib/mezuro_plugin/project_content.rb index 3d259df..f477eed 100644 --- a/plugins/mezuro/lib/mezuro_plugin/project_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/project_content.rb @@ -35,9 +35,9 @@ class MezuroPlugin::ProjectContent < Article end end - def get_date_result(date) + def project_result_with_date(date) begin - @project_result ||= Kalibro::ProjectResult.has_results_before?(name, date) ? Kalibro::ProjectResult.last_result_before?(name, date) : + @project_result ||= Kalibro::ProjectResult.has_results_before?(name, date) ? Kalibro::ProjectResult.last_result_before(name, date) : Kalibro::ProjectResult.first_result_after(name, date) rescue Exception => error errors.add_to_base(error.message) @@ -46,11 +46,11 @@ Kalibro::ProjectResult.first_result_after(name, date) def module_result(module_name) module_name = project.name if module_name.nil? - @module_client ||= module_result_client.module_result(project.name, module_name, project_result.date) + @module_client ||= Kalibro::ModuleResult.find_by_project_name_and_module_name_and_date(project.name, module_name, @project_result.date) end def result_history(module_name) - @result_history ||= module_result_client.result_history(project.name, module_name) + @result_history ||= Kalibro::ModuleResult.all_by_project_name_and_module_name(project.name, module_name) end after_save :send_project_to_service @@ -78,7 +78,7 @@ Kalibro::ProjectResult.first_result_after(name, date) def send_project_to_service begin - Kalibro::Project.create(self).save + Kalibro::Project.create(self) Kalibro::Kalibro.process_project(name, periodicity_in_days) rescue Exception => error errors.add_to_base(error.message) @@ -94,11 +94,4 @@ Kalibro::ProjectResult.first_result_after(name, date) end end - def module_result_client - begin - @module_result_client ||= Kalibro::Client::ModuleResultClient.new - rescue Exception => error - errors.add_to_base(error.message) - end - end end diff --git a/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb b/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb index d710d05..26ea3e8 100644 --- a/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb +++ b/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb @@ -13,167 +13,123 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase @response = ActionController::TestResponse.new @profile = fast_create(Community) - @project_result = ProjectResultFixtures.qt_calculator - @module_result = ModuleResultFixtures.create + @project_result = ProjectResultFixtures.project_result + @module_result = ModuleResultFixtures.module_result @repository_url = RepositoryFixtures.repository.address @project = @project_result.project - @name = @project.name - @date = "2012-04-13T20:39:41+04:00" - + + Kalibro::Project.expects(:all_names).returns([]) + @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) + @content.expects(:send_project_to_service).returns(nil) + @content.save end - should 'not find project state for inexistent project content' do - get :project_state, :profile => '', :id => -1 - assert_response 404 - end - - should 'get project state' do - create_project_content - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) + should 'test project state without error' do + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) get :project_state, :profile => @profile.identifier, :id => @content.id assert_response 200 + assert_equal @content, assigns(:content) end - should 'get error state if project has error' do - create_project_content - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - @project.expects(:error).returns(ErrorFixtures.create) + should 'test project state with error' do + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) get :project_state, :profile => @profile.identifier, :id => @content.id assert_response 200 + assert_equal "ERROR", @response.body + assert_equal @content, assigns(:content) end - should 'not find content in project error for inexistent project content' do - get :project_error, :profile => '', :id => -1 - assert_response 404 - end - - should 'get project error' do - create_project_content - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - @project.expects(:error).returns(ErrorFixtures.create) + should 'test project error' do + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) get :project_error, :profile => @profile.identifier, :id => @content.id assert_response 200 assert_select('h3', 'ERROR') + assert_equal @content, assigns(:content) + assert_equal @project.name, assigns(:project).name end - should 'not find project result for inexistent project content' do - get :project_result, :profile => '', :id => -1 - assert_response 404 - end - - should 'get project results without date' do - create_project_content - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) - get :project_result, :profile => @profile.identifier, :id => @content.id + should 'test project result without date' do + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) + get :project_result, :profile => @profile.identifier, :id => @content.id, :date => nil + assert_equal @content, assigns(:content) + assert_equal @project_result.project.name, assigns(:project_result).project.name assert_response 200 assert_select('h4', 'Last Result') end - should 'get project results from a specific date' do - create_project_content - mock_project_result - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @project_result.date + should 'test project results from a specific date' do + request_body = {:project_name => @project.name, :date => @date} + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) + get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @date + assert_equal @content, assigns(:content) + assert_equal @project_result.project.name, assigns(:project_result).project.name assert_response 200 + assert_select('h4', 'Last Result') end - should 'not find module result for inexistent project content' do - get :module_result, :profile => '', :id => -1, :module_name => '' - assert_response 404 - end should 'get module result without date' do - create_project_content - mock_module_result - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name + date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}).returns({:module_result => @module_result.to_hash}) + get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name, :date => nil + assert_equal @content, assigns(:content) + assert_equal @module_result.grade, assigns(:module_result).grade assert_response 200 assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') end - should 'get module result from a specific date' do - create_project_content - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - mock_module_result - mock_project_result - get :module_result, :profile => @profile.identifier, :id => @content.id, :date => @project_result.date, :module_name => @name - assert_response 200 - assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') - end - - should 'not find project tree for inexistent project content' do - get :project_tree, :profile => '', :id => -1, :module_name => '' - assert_response 404 + should 'get module result with a specific date' do + date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) + request_body = {:project_name => @project.name, :date => @project_result.date} + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}).returns({:module_result => @module_result.to_hash}) + get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date + assert_equal @content, assigns(:content) + assert_equal @module_result.grade, assigns(:module_result).grade + assert_response 200 + assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') end - should 'get project tree without date' do - create_project_content - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @name + should 'test project tree without date' do + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) + get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => nil + assert_equal @content, assigns(:content) + assert_equal @project.name, assigns(:project_name) + assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name assert_response 200 assert_select('h2', /Qt-Calculator/) end - should 'get project tree from a specific date' do - create_project_content - mock_project_result - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @name, :date => "2012-04-13T20:39:41+04:00" + should 'test project tree with a specific date' do + request_body = {:project_name => @project.name, :date => @project_result.date} + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) + get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date + assert_equal @content, assigns(:content) + assert_equal @project.name, assigns(:project_name) + assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name assert_response 200 end - should 'get grade history' do - create_project_content - mock_module_result_history - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @name - assert_response 200 - end - - should 'not find metrics history for inexistent project content' do - get :module_metrics_history, :profile => '', :id => -1, :module_name => '' - assert_response 404 - end - #copied from 'get grade history' test - should 'get metrics history' do - create_project_content - mock_module_result_history - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) - get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @name, + should 'test module metrics history' do + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) + get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :metric_name => @module_result.metric_result.first.metric.name.delete("() ") + assert_equal @content, assigns(:content) + assert_equal [@module_result.metric_result[0].value], assigns(:score_history) assert_response 200 end - - private - - def create_project_content - client = mock - @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @name) - @content.expects(:send_project_to_service).returns(nil) - Kalibro::Client::ProjectClient.expects(:new).returns(client) - @content.repository_url = @repository_url - client.expects(:project_names).returns([]) - @content.save - end - def mock_project_result - project_result_client = mock - Kalibro::Client::ProjectResultClient.expects(:new).returns(project_result_client) - project_result_client.expects(:has_results_before).returns(true) - project_result_client.expects(:last_result_before).returns(@project_result) - end - - def mock_module_result - module_result_client = mock - Kalibro::Client::ModuleResultClient.expects(:new).returns(module_result_client) - module_result_client.expects(:module_result).with(@name, @name, @project_result.date).returns(@module_result) + should 'test grade history' do + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) + get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name + assert_equal @content, assigns(:content) + assert_equal [@module_result.grade], assigns(:score_history) + assert_response 200 end - def mock_module_result_history - module_result_client = mock - module_result_client.expects(:result_history).with(@name, @name).returns([@module_result]) - Kalibro::Client::ModuleResultClient.expects(:new).returns(module_result_client) - end end -- libgit2 0.21.2