Commit d056407511404579f6c2d086d55e459feac01407

Authored by Diego Camarinha
Committed by Paulo Meireles
1 parent 63911c66

[Mezuro] Finished refactoring project model design.

plugins/mezuro/lib/mezuro_plugin/project_content.rb
@@ -21,7 +21,7 @@ class MezuroPlugin::ProjectContent < Article @@ -21,7 +21,7 @@ class MezuroPlugin::ProjectContent < Article
21 21
22 def project 22 def project
23 begin 23 begin
24 - @project ||= Kalibro::Client::ProjectClient.project(name) 24 + @project ||= Kalibro::Project.find_by_name(name)
25 rescue Exception => error 25 rescue Exception => error
26 errors.add_to_base(error.message) 26 errors.add_to_base(error.message)
27 end 27 end
@@ -55,13 +55,13 @@ client.first_result_after(name, date) @@ -55,13 +55,13 @@ client.first_result_after(name, date)
55 end 55 end
56 56
57 after_save :send_project_to_service 57 after_save :send_project_to_service
58 - after_destroy :remove_project_from_service 58 + after_destroy :destroy_project_from_service
59 59
60 private 60 private
61 61
62 def validate_kalibro_project_name 62 def validate_kalibro_project_name
63 begin 63 begin
64 - existing = Kalibro::Client::ProjectClient.new.project_names 64 + existing = Kalibro::Project.all_names
65 rescue Exception => error 65 rescue Exception => error
66 errors.add_to_base(error.message) 66 errors.add_to_base(error.message)
67 end 67 end
@@ -79,7 +79,7 @@ client.first_result_after(name, date) @@ -79,7 +79,7 @@ client.first_result_after(name, date)
79 79
80 def send_project_to_service 80 def send_project_to_service
81 begin 81 begin
82 - Kalibro::Client::ProjectClient.save(self) 82 + Kalibro::Project.create(self).save
83 Kalibro::Client::KalibroClient.process_project(name, periodicity_in_days) 83 Kalibro::Client::KalibroClient.process_project(name, periodicity_in_days)
84 rescue Exception => error 84 rescue Exception => error
85 errors.add_to_base(error.message) 85 errors.add_to_base(error.message)
@@ -87,13 +87,12 @@ client.first_result_after(name, date) @@ -87,13 +87,12 @@ client.first_result_after(name, date)
87 87
88 end 88 end
89 89
90 - def remove_project_from_service 90 + def destroy_project_from_service
91 begin 91 begin
92 - Kalibro::Client::ProjectClient.remove(name) 92 + Kalibro::Project.destroy(name)
93 rescue Exception => error 93 rescue Exception => error
94 errors.add_to_base(error.message) 94 errors.add_to_base(error.message)
95 end 95 end
96 -  
97 end 96 end
98 97
99 def module_result_client 98 def module_result_client
plugins/mezuro/test/fixtures/project_fixtures.rb
@@ -2,16 +2,28 @@ require File.dirname(__FILE__) + '/repository_fixtures' @@ -2,16 +2,28 @@ require File.dirname(__FILE__) + '/repository_fixtures'
2 2
3 class ProjectFixtures 3 class ProjectFixtures
4 4
5 - def self.qt_calculator  
6 - Kalibro::Project.new qt_calculator_hash 5 + def self.project
  6 + Kalibro::Project.new project_hash
7 end 7 end
8 8
9 - def self.qt_calculator_hash 9 + def self.project_content
  10 + content = MezuroPlugin::ProjectContent.new
  11 + content.name = 'Qt-Calculator'
  12 + content.license = 'GPL'
  13 + content.description = 'Calculator for Qt'
  14 + content.repository_type = RepositoryFixtures.repository_hash[:type]
  15 + content.repository_url = RepositoryFixtures.repository_hash[:address]
  16 + content.configuration_name = 'Kalibro for Java'
  17 + content.periodicity_in_days = 1
  18 + content
  19 + end
  20 +
  21 + def self.project_hash
10 { 22 {
11 :name => 'Qt-Calculator', 23 :name => 'Qt-Calculator',
12 :license => 'GPL', 24 :license => 'GPL',
13 :description => 'Calculator for Qt', 25 :description => 'Calculator for Qt',
14 - :repository => RepositoryFixtures.qt_calculator_hash, 26 + :repository => RepositoryFixtures.repository_hash,
15 :configuration_name => 'Kalibro for Java', 27 :configuration_name => 'Kalibro for Java',
16 :state => 'READY' 28 :state => 'READY'
17 } 29 }
plugins/mezuro/test/fixtures/project_result_fixtures.rb
@@ -6,7 +6,7 @@ class ProjectResultFixtures @@ -6,7 +6,7 @@ class ProjectResultFixtures
6 6
7 def self.qt_calculator 7 def self.qt_calculator
8 result = Kalibro::Entities::ProjectResult.new 8 result = Kalibro::Entities::ProjectResult.new
9 - result.project = ProjectFixtures.qt_calculator 9 + result.project = ProjectFixtures.project
10 result.date = ModuleResultFixtures.create.date 10 result.date = ModuleResultFixtures.create.date
11 result.load_time = 14878 11 result.load_time = 14878
12 result.analysis_time = 1022 12 result.analysis_time = 1022
@@ -16,7 +16,7 @@ class ProjectResultFixtures @@ -16,7 +16,7 @@ class ProjectResultFixtures
16 end 16 end
17 17
18 def self.qt_calculator_hash 18 def self.qt_calculator_hash
19 - {:project => ProjectFixtures.qt_calculator_hash, :date => ModuleResultFixtures.create_hash[:date], 19 + {:project => ProjectFixtures.project_hash, :date => ModuleResultFixtures.create_hash[:date],
20 :load_time => 14878, :analysis_time => 1022, :source_tree => ModuleNodeFixtures.qt_calculator_tree_hash, 20 :load_time => 14878, :analysis_time => 1022, :source_tree => ModuleNodeFixtures.qt_calculator_tree_hash,
21 :collect_time => 14878} 21 :collect_time => 14878}
22 end 22 end
plugins/mezuro/test/fixtures/repository_fixtures.rb
1 class RepositoryFixtures 1 class RepositoryFixtures
2 2
3 - def self.qt_calculator  
4 - Kalibro::Repository.new qt_calculator_hash 3 + def self.repository
  4 + Kalibro::Repository.new repository_hash
5 end 5 end
6 6
7 - def self.qt_calculator_hash 7 + def self.repository_hash
8 {:type => 'SUBVERSION', :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator'} 8 {:type => 'SUBVERSION', :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator'}
9 end 9 end
10 10
plugins/mezuro/test/unit/kalibro/project_test.rb
@@ -5,11 +5,18 @@ require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_fixtures" @@ -5,11 +5,18 @@ require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_fixtures"
5 class ProjectTest < ActiveSupport::TestCase 5 class ProjectTest < ActiveSupport::TestCase
6 6
7 def setup 7 def setup
8 - @hash = ProjectFixtures.qt_calculator_hash  
9 - @project = ProjectFixtures.qt_calculator 8 + @hash = ProjectFixtures.project_hash
  9 + @project = ProjectFixtures.project
  10 + @project_content = ProjectFixtures.project_content
10 end 11 end
11 12
12 - should 'get project by name' do 13 + should 'get all project names' do
  14 + response_hash = {:project_name => [@project.name]}
  15 + Kalibro::Project.expects(:request).with(:get_project_names).returns(response_hash)
  16 + assert_equal response_hash[:project_name], Kalibro::Project.all_names
  17 + end
  18 +
  19 + should 'find project by name' do
13 request_body = {:project_name => @project.name} 20 request_body = {:project_name => @project.name}
14 response_hash = {:project => @hash} 21 response_hash = {:project => @hash}
15 Kalibro::Project.expects(:new).with(@hash).returns(@project) 22 Kalibro::Project.expects(:new).with(@hash).returns(@project)
@@ -43,31 +50,24 @@ class ProjectTest &lt; ActiveSupport::TestCase @@ -43,31 +50,24 @@ class ProjectTest &lt; ActiveSupport::TestCase
43 assert_raise Exception do Kalibro::Project.destroy(@project.name) end 50 assert_raise Exception do Kalibro::Project.destroy(@project.name) end
44 end 51 end
45 52
46 -=begin  
47 - should 'not try to remove inexistent project from service' do  
48 - @port.expects(:request).with(:get_project_names).returns({:project_name => 'Different project'})  
49 - @port.expects(:request).with(:remove_project, {:project_name => @project.name}).never  
50 - Kalibro::Client::ProjectClient.remove(@project.name)  
51 - end  
52 -  
53 - private  
54 -  
55 - def create_project_content_mock  
56 - @project_content = mock  
57 - @project_content.expects(:name).returns(@project.name)  
58 - @project_content.expects(:license).returns(@project.license)  
59 - @project_content.expects(:description).returns(@project.description)  
60 - @project_content.expects(:repository_type).returns(@project.repository.type)  
61 - @project_content.expects(:repository_url).returns(@project.repository.address)  
62 - @project_content.expects(:configuration_name).returns(@project.configuration_name) 53 + should 'initialize new project from hash' do
  54 + project = Kalibro::Project.new @hash
  55 + assert_equal @project.name, project.name
  56 + assert_equal @project.repository.type, project.repository.type
63 end 57 end
64 58
65 - should 'create project from hash' do  
66 - assert_equal @project, Kalibro::Project.new(@hash) 59 + should 'create project' do
  60 + project = Kalibro::Project.create @project_content
  61 + assert_equal @project.name, project.name
  62 + assert_equal @project.repository.type, project.repository.type
67 end 63 end
68 64
69 should 'convert project to hash' do 65 should 'convert project to hash' do
70 - assert_equal @hash, @project.to_hash 66 + hash = @project.to_hash
  67 + assert_equal @hash[:name], hash[:name]
  68 + assert_equal @hash[:configuration_name], hash[:configuration_name]
  69 + assert_equal @hash[:repository], hash[:repository]
  70 + assert_equal @hash[:state], hash[:state]
71 end 71 end
72 -=end 72 +
73 end 73 end
plugins/mezuro/test/unit/kalibro/repository_test.rb
@@ -5,8 +5,8 @@ require &quot;#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures&quot; @@ -5,8 +5,8 @@ require &quot;#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures&quot;
5 class RepositoryTest < ActiveSupport::TestCase 5 class RepositoryTest < ActiveSupport::TestCase
6 6
7 def setup 7 def setup
8 - @hash = RepositoryFixtures.qt_calculator_hash  
9 - @repository = RepositoryFixtures.qt_calculator 8 + @hash = RepositoryFixtures.repository_hash
  9 + @repository = RepositoryFixtures.repository
10 end 10 end
11 11
12 should 'new repository from hash' do 12 should 'new repository from hash' do
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
@@ -6,15 +6,8 @@ require &quot;#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures&quot; @@ -6,15 +6,8 @@ require &quot;#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures&quot;
6 class ProjectContentTest < ActiveSupport::TestCase 6 class ProjectContentTest < ActiveSupport::TestCase
7 7
8 def setup 8 def setup
9 - @project = ProjectFixtures.qt_calculator  
10 - @content = MezuroPlugin::ProjectContent.new  
11 - @content.name = @project.name  
12 - @content.license = @project.license  
13 - @content.description = @project.description  
14 - @content.repository_type = @project.repository.type  
15 - @content.repository_url = @project.repository.address  
16 - @content.configuration_name = @project.configuration_name  
17 - @content.periodicity_in_days = 1 9 + @project = ProjectFixtures.project
  10 + @content = ProjectFixtures.project_content
18 end 11 end
19 12
20 should 'be an article' do 13 should 'be an article' do
@@ -34,7 +27,7 @@ class ProjectContentTest &lt; ActiveSupport::TestCase @@ -34,7 +27,7 @@ class ProjectContentTest &lt; ActiveSupport::TestCase
34 end 27 end
35 28
36 should 'get project from service' do 29 should 'get project from service' do
37 - Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(@project) 30 + Kalibro::Project.expects(:find_by_name).with(@content.name).returns(@project)
38 assert_equal @project, @content.project 31 assert_equal @project, @content.project
39 end 32 end
40 33
@@ -100,20 +93,20 @@ returns(module_result) @@ -100,20 +93,20 @@ returns(module_result)
100 end 93 end
101 94
102 should 'send correct project to service' do 95 should 'send correct project to service' do
103 - Kalibro::Client::ProjectClient.expects(:save).with(@content) 96 + project = mock
  97 + Kalibro::Project.expects(:create).with(@content).returns(project)
  98 + project.expects(:save).returns(true)
104 Kalibro::Client::KalibroClient.expects(:process_project).with(@content.name, @content.periodicity_in_days) 99 Kalibro::Client::KalibroClient.expects(:process_project).with(@content.name, @content.periodicity_in_days)
105 @content.send :send_project_to_service 100 @content.send :send_project_to_service
106 end 101 end
107 102
108 - should 'remove project from service' do  
109 - Kalibro::Client::ProjectClient.expects(:remove).with(@content.name)  
110 - @content.send :remove_project_from_service 103 + should 'destroy project from service' do
  104 + Kalibro::Project.expects(:destroy).with(@content.name)
  105 + @content.send :destroy_project_from_service
111 end 106 end
112 107
113 should 'not save a project with an existing project name in kalibro' do 108 should 'not save a project with an existing project name in kalibro' do
114 - client = mock  
115 - Kalibro::Client::ProjectClient.expects(:new).returns(client)  
116 - client.expects(:project_names).returns([@content.name]) 109 + Kalibro::Project.expects(:all_names).returns([@content.name])
117 @content.send :validate_kalibro_project_name 110 @content.send :validate_kalibro_project_name
118 assert_equal "Project name already exists in Kalibro", @content.errors.on_base 111 assert_equal "Project name already exists in Kalibro", @content.errors.on_base
119 end 112 end
@@ -121,7 +114,7 @@ returns(module_result) @@ -121,7 +114,7 @@ returns(module_result)
121 private 114 private
122 115
123 def mock_project_client 116 def mock_project_client
124 - Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(@project) 117 + Kalibro::Project.expects(:find_by_name).with(@content.name).returns(@project)
125 end 118 end
126 119
127 def mock_project_result_client 120 def mock_project_result_client