From 2058c115cbd25bfbf1cd4d18ba98fe3919f6470e Mon Sep 17 00:00:00 2001 From: Carlos Morais + Paulo Meirelles Date: Fri, 10 Feb 2012 12:15:00 -0200 Subject: [PATCH] [Mezuro] Refactoring ProjectClient, ProjectContent --- plugins/mezuro/lib/kalibro/client/project_client.rb | 41 ++++++++++++++++++++++++++++++++--------- plugins/mezuro/lib/mezuro_plugin/project_content.rb | 23 +++-------------------- plugins/mezuro/test/fixtures/project_fixtures.rb | 2 ++ plugins/mezuro/test/unit/kalibro/client/project_client_test.rb | 60 +++++++++++++++++++++++------------------------------------- plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb | 2 +- 5 files changed, 61 insertions(+), 67 deletions(-) diff --git a/plugins/mezuro/lib/kalibro/client/project_client.rb b/plugins/mezuro/lib/kalibro/client/project_client.rb index b5ce7bb..0fcbbc6 100644 --- a/plugins/mezuro/lib/kalibro/client/project_client.rb +++ b/plugins/mezuro/lib/kalibro/client/project_client.rb @@ -1,5 +1,35 @@ class Kalibro::Client::ProjectClient + def self.project(project_name) + new.project(project_name) + end + + def self.save(project_content) + project = create_project(project_content) + new.save(project) + end + + def self.remove(project_name) + new.remove(project_name) + end + + def self.create_project (project_content) + project = Kalibro::Entities::Project.new + project.name = project_content.name + project.license = project_content.license + project.description = project_content.description + project.repository = create_repository(project_content) + project.configuration_name = project_content.configuration_name + project + end + + def self.create_repository(project_content) + repository = Kalibro::Entities::Repository.new + repository.type = project_content.repository_type + repository.address = project_content.repository_url + repository + end + def initialize @port = Kalibro::Client::Port.new('Project') end @@ -8,16 +38,12 @@ class Kalibro::Client::ProjectClient @port.request(:save_project, {:project => project.to_hash}) end - def self.save(project) - new.save(project) - end - def project_names @port.request(:get_project_names)[:project_name].to_a end - def project(name) - hash = @port.request(:get_project, {:project_name => name})[:project] + def project(project_name) + hash = @port.request(:get_project, {:project_name => project_name})[:project] Kalibro::Entities::Project.from_hash(hash) end @@ -25,7 +51,4 @@ class Kalibro::Client::ProjectClient @port.request(:remove_project, {:project_name => project_name}) end - def self.remove(project_name) - new.remove(project_name) - end end diff --git a/plugins/mezuro/lib/mezuro_plugin/project_content.rb b/plugins/mezuro/lib/mezuro_plugin/project_content.rb index 97689f8..68188cc 100644 --- a/plugins/mezuro/lib/mezuro_plugin/project_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/project_content.rb @@ -17,9 +17,9 @@ class MezuroPlugin::ProjectContent < Article end end - # FIXME is this really needed? + # From ProjectClient def project - Kalibro::Client::ProjectClient.new.project(name) + Kalibro::Client::ProjectClient.project(name) end def project_result @@ -37,7 +37,7 @@ class MezuroPlugin::ProjectContent < Article private def send_project_to_service - Kalibro::Client::ProjectClient.save(create_project) + Kalibro::Client::ProjectClient.save(self) Kalibro::Client::KalibroClient.process_project(name) end @@ -45,22 +45,5 @@ class MezuroPlugin::ProjectContent < Article Kalibro::Client::ProjectClient.remove(name) end - def create_project - project = Kalibro::Entities::Project.new - project.name = name - project.license = license - project.description = description - project.repository = create_repository - project.configuration_name = configuration_name - project - end - - def create_repository - repository = Kalibro::Entities::Repository.new - repository.type = repository_type - repository.address = repository_url - repository - end - end diff --git a/plugins/mezuro/test/fixtures/project_fixtures.rb b/plugins/mezuro/test/fixtures/project_fixtures.rb index 4927cd0..7392709 100644 --- a/plugins/mezuro/test/fixtures/project_fixtures.rb +++ b/plugins/mezuro/test/fixtures/project_fixtures.rb @@ -1,3 +1,5 @@ +require File.dirname(__FILE__) + '/repository_fixtures' + class ProjectFixtures def self.qt_calculator diff --git a/plugins/mezuro/test/unit/kalibro/client/project_client_test.rb b/plugins/mezuro/test/unit/kalibro/client/project_client_test.rb index afe58b0..f908a50 100644 --- a/plugins/mezuro/test/unit/kalibro/client/project_client_test.rb +++ b/plugins/mezuro/test/unit/kalibro/client/project_client_test.rb @@ -7,52 +7,38 @@ class ProjectClientTest < ActiveSupport::TestCase def setup @port = mock Kalibro::Client::Port.expects(:new).with('Project').returns(@port) - @client = Kalibro::Client::ProjectClient.new - end - - should 'save project' do - project = ProjectFixtures.qt_calculator - @port.expects(:request).with(:save_project, {:project => project.to_hash}) - @client.save(project) - end - - should 'get project names (zero)' do - @port.expects(:request).with(:get_project_names).returns({}) - assert_equal [], @client.project_names - end - - should 'get project names (one)' do - name = 'Qt-Calculator' - @port.expects(:request).with(:get_project_names).returns({:project_name => name}) - assert_equal [name], @client.project_names - end - - should 'get project names' do - names = ['Hello World', 'Qt-Calculator'] - @port.expects(:request).with(:get_project_names).returns({:project_name => names}) - assert_equal names, @client.project_names + @project = ProjectFixtures.qt_calculator end should 'get project by name' do - project = ProjectFixtures.qt_calculator - request_body = {:project_name => project.name} - response_hash = {:project => project.to_hash} + request_body = {:project_name => @project.name} + response_hash = {:project => @project.to_hash} @port.expects(:request).with(:get_project, request_body).returns(response_hash) - assert_equal project, @client.project(project.name) + assert_equal @project, Kalibro::Client::ProjectClient.project(@project.name) + end + + should 'save project' do + create_project_content_mock + @project.state = nil + @port.expects(:request).with(:save_project, {:project => @project.to_hash}) + Kalibro::Client::ProjectClient.save(@project_content) end should 'remove project by name' do - name = 'ProjectClientTest' - @port.expects(:request).with(:remove_project, {:project_name => name}) - @client.remove(name) + @port.expects(:request).with(:remove_project, {:project_name => @project.name}) + Kalibro::Client::ProjectClient.remove(@project.name) end - should 'instantiate for saving a project' do - project = mock - instance = mock - Kalibro::Client::ProjectClient.expects(:new).returns(instance) - instance.expects(:save).with(project) - Kalibro::Client::ProjectClient.save(project) + private + + def create_project_content_mock + @project_content = mock + @project_content.expects(:name).returns(@project.name) + @project_content.expects(:license).returns(@project.license) + @project_content.expects(:description).returns(@project.description) + @project_content.expects(:repository_type).returns(@project.repository.type) + @project_content.expects(:repository_url).returns(@project.repository.address) + @project_content.expects(:configuration_name).returns(@project.configuration_name) end end diff --git a/plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb b/plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb index 5cb32df..942a764 100644 --- a/plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb +++ b/plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb @@ -37,7 +37,7 @@ class ProjectContentTest < ActiveSupport::TestCase end should 'send correct project to service' do - Kalibro::Client::ProjectClient.expects(:save).with(@project) + Kalibro::Client::ProjectClient.expects(:save).with(@content) Kalibro::Client::KalibroClient.expects(:process_project).with(@project.name) @content.send :send_project_to_service end -- libgit2 0.21.2