From 64b24c2299b82b476bae845f9ea0eb64b9e6b430 Mon Sep 17 00:00:00 2001 From: João M. M. da Silva + Diego Araújo Date: Tue, 6 Nov 2012 15:50:15 -0200 Subject: [PATCH] [Mezuro] completed repository model refactoring. --- plugins/mezuro/lib/kalibro/repository.rb | 20 ++++++++++++++++++-- plugins/mezuro/test/fixtures/repository_fixtures.rb | 14 +++++++++++++- plugins/mezuro/test/unit/kalibro/repository_test.rb | 43 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/plugins/mezuro/lib/kalibro/repository.rb b/plugins/mezuro/lib/kalibro/repository.rb index 26be3a7..2b83d44 100644 --- a/plugins/mezuro/lib/kalibro/repository.rb +++ b/plugins/mezuro/lib/kalibro/repository.rb @@ -1,9 +1,25 @@ class Kalibro::Repository < Kalibro::Model - attr_accessor :type, :address, :username, :password + attr_accessor :id, :name, :description, :license, :process_period, :type, :address, :configuration_id def self.repository_types - request("Kalibro", :get_supported_repository_types)[:repository_type].to_a + request("Repository", :supported_repository_types)[:repository_type].to_a + end + + def self.repository_of(processing_id) + new request("Repository", :repository_of, {:processing_id => processing_id})[:repository] + end + + def self.repositories_of(project_id) + request("Repository", :repositories_of, {:project_id => project_id})[:repository].to_a.map { |repository| new repository } + end + + def process_repository + self.class.request("Repository", :process_repository, {:repository_id => self.id}); + end + + def cancel_processing_of_repository + self.class.request("Repository", :cancel_processing_of_repository, {:repository_id => self.id}); end end diff --git a/plugins/mezuro/test/fixtures/repository_fixtures.rb b/plugins/mezuro/test/fixtures/repository_fixtures.rb index 3131f77..7b8c0e4 100644 --- a/plugins/mezuro/test/fixtures/repository_fixtures.rb +++ b/plugins/mezuro/test/fixtures/repository_fixtures.rb @@ -4,8 +4,20 @@ class RepositoryFixtures Kalibro::Repository.new repository_hash end + def self.created_repository + Kalibro::Repository.new({ + :name => "test created repository", + :description => "test description", + :license => "GPL", + :process_period => "1", + :type => 'SUBVERSION', + :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator', + :configuration_id => 31 + }) + end + def self.repository_hash - {:type => 'SUBVERSION', :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator'} + {:id => 42, :name => "test repository", :description => "test description", :license => "GPL", :process_period => "1", :type => 'SUBVERSION', :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator', :configuration_id => 31} end end diff --git a/plugins/mezuro/test/unit/kalibro/repository_test.rb b/plugins/mezuro/test/unit/kalibro/repository_test.rb index 145c11a..f778125 100644 --- a/plugins/mezuro/test/unit/kalibro/repository_test.rb +++ b/plugins/mezuro/test/unit/kalibro/repository_test.rb @@ -7,6 +7,7 @@ class RepositoryTest < ActiveSupport::TestCase def setup @hash = RepositoryFixtures.repository_hash @repository = RepositoryFixtures.repository + @created_repository = RepositoryFixtures.created_repository end should 'new repository from hash' do @@ -19,8 +20,48 @@ class RepositoryTest < ActiveSupport::TestCase should 'get supported repository types' do types = ['BAZAAR', 'GIT', 'SUBVERSION'] - Kalibro::Repository.expects(:request).with('Kalibro', :get_supported_repository_types).returns({:repository_type => types}) + Kalibro::Repository.expects(:request).with('Repository', :supported_repository_types).returns({:repository_type => types}) assert_equal types, Kalibro::Repository.repository_types end + should 'get repository of a precessing' do + id = 31 + Kalibro::Repository.expects(:request).with("Repository", :repository_of, {:processing_id => id}).returns({:repository => @hash}) + assert_equal @hash[:name], Kalibro::Repository.repository_of(id).name + end + + should 'get repositories of a project' do + project_id = 31 + Kalibro::Repository.expects(:request).with("Repository", :repositories_of, {:project_id => project_id}).returns({:repository => [@hash]}) + assert_equal @hash[:name], Kalibro::Repository.repositories_of(project_id).first.name + end + + should 'return true when repository is saved successfully' do + id_from_kalibro = 1 + Kalibro::Repository.expects(:request).with("Repository", :save_repository, {:repository => @created_repository.to_hash}).returns(id_from_kalibro) + assert @created_repository.save + assert_equal id_from_kalibro, @created_repository.id + end + + should 'return false when repository is not saved successfully' do + Kalibro::Repository.expects(:request).with("Repository", :save_repository, {:repository => @created_repository.to_hash}).raises(Exception.new) + assert !(@created_repository.save) + assert_nil @created_repository.id + end + + should 'destroy repository by id' do + Kalibro::Repository.expects(:request).with("Repository", :delete_repository, {:repository_id => @repository.id}) + @repository.destroy + end + + should 'process repository' do + Kalibro::Repository.expects(:request).with("Repository", :process_repository, {:repository_id => @repository.id}); + @repository.process_repository + end + + should 'cancel processing of a repository' do + Kalibro::Repository.expects(:request).with("Repository", :cancel_processing_of_repository, {:repository_id => @repository.id}); + @repository.cancel_processing_of_repository + end + end -- libgit2 0.21.2