Commit 0f1414acc8043de1998162ecf65d7cabc99f2d6e
Exists in
master
and in
29 other branches
Merge branch 'functional-tests' into ajax-autoload
Conflicts: plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb plugins/mezuro/test/fixtures/compound_metric_with_error_fixtures.rb plugins/mezuro/test/fixtures/error_fixtures.rb plugins/mezuro/test/fixtures/metric_result_fixtures.rb plugins/mezuro/test/fixtures/module_result_fixtures.rb plugins/mezuro/test/fixtures/project_fixtures.rb plugins/mezuro/test/fixtures/project_result_fixtures.rb plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb plugins/mezuro/test/mezuro_test.rb plugins/mezuro/test/unit/kalibro/client/project_client_test.rb plugins/mezuro/test/unit/kalibro/client/project_result_client_test.rb plugins/mezuro/views/content_viewer/show_project.rhtml
Showing
16 changed files
with
152 additions
and
125 deletions
Show diff stats
plugins/mezuro/lib/kalibro/client/module_result_client.rb
1 | class Kalibro::Client::ModuleResultClient | 1 | class Kalibro::Client::ModuleResultClient |
2 | + | ||
3 | + # TODO test this | ||
4 | + def self.module_result(project_content, module_name) | ||
5 | + project_result = project_content.project_result | ||
6 | + new.module_result(project_result.project.name, module_name, project_result.date) | ||
7 | + end | ||
2 | 8 | ||
3 | def initialize | 9 | def initialize |
4 | @port = Kalibro::Client::Port.new('ModuleResult') | 10 | @port = Kalibro::Client::Port.new('ModuleResult') |
plugins/mezuro/lib/kalibro/client/project_client.rb
1 | class Kalibro::Client::ProjectClient | 1 | class Kalibro::Client::ProjectClient |
2 | 2 | ||
3 | + def self.project(project_name) | ||
4 | + new.project(project_name) | ||
5 | + end | ||
6 | + | ||
7 | + def self.save(project_content) | ||
8 | + project = create_project(project_content) | ||
9 | + new.save(project) | ||
10 | + end | ||
11 | + | ||
12 | + def self.remove(project_name) | ||
13 | + instance = new | ||
14 | + if (instance.project_names.include?(project_name)) | ||
15 | + instance.remove(project_name) | ||
16 | + end | ||
17 | + end | ||
18 | + | ||
19 | + def self.create_project (project_content) | ||
20 | + project = Kalibro::Entities::Project.new | ||
21 | + project.name = project_content.name | ||
22 | + project.license = project_content.license | ||
23 | + project.description = project_content.description | ||
24 | + project.repository = create_repository(project_content) | ||
25 | + project.configuration_name = project_content.configuration_name | ||
26 | + project | ||
27 | + end | ||
28 | + | ||
29 | + def self.create_repository(project_content) | ||
30 | + repository = Kalibro::Entities::Repository.new | ||
31 | + repository.type = project_content.repository_type | ||
32 | + repository.address = project_content.repository_url | ||
33 | + repository | ||
34 | + end | ||
35 | + | ||
3 | def initialize | 36 | def initialize |
4 | @port = Kalibro::Client::Port.new('Project') | 37 | @port = Kalibro::Client::Port.new('Project') |
5 | end | 38 | end |
@@ -8,16 +41,12 @@ class Kalibro::Client::ProjectClient | @@ -8,16 +41,12 @@ class Kalibro::Client::ProjectClient | ||
8 | @port.request(:save_project, {:project => project.to_hash}) | 41 | @port.request(:save_project, {:project => project.to_hash}) |
9 | end | 42 | end |
10 | 43 | ||
11 | - def self.save(project) | ||
12 | - new.save(project) | ||
13 | - end | ||
14 | - | ||
15 | def project_names | 44 | def project_names |
16 | @port.request(:get_project_names)[:project_name].to_a | 45 | @port.request(:get_project_names)[:project_name].to_a |
17 | end | 46 | end |
18 | 47 | ||
19 | - def project(name) | ||
20 | - hash = @port.request(:get_project, {:project_name => name})[:project] | 48 | + def project(project_name) |
49 | + hash = @port.request(:get_project, {:project_name => project_name})[:project] | ||
21 | Kalibro::Entities::Project.from_hash(hash) | 50 | Kalibro::Entities::Project.from_hash(hash) |
22 | end | 51 | end |
23 | 52 | ||
@@ -25,7 +54,4 @@ class Kalibro::Client::ProjectClient | @@ -25,7 +54,4 @@ class Kalibro::Client::ProjectClient | ||
25 | @port.request(:remove_project, {:project_name => project_name}) | 54 | @port.request(:remove_project, {:project_name => project_name}) |
26 | end | 55 | end |
27 | 56 | ||
28 | - def self.remove(project_name) | ||
29 | - new.remove(project_name) | ||
30 | - end | ||
31 | end | 57 | end |
plugins/mezuro/lib/kalibro/client/project_result_client.rb
1 | class Kalibro::Client::ProjectResultClient | 1 | class Kalibro::Client::ProjectResultClient |
2 | 2 | ||
3 | + # TODO test this | ||
4 | + def self.last_result(project_name) | ||
5 | + new.last_result(project_name) | ||
6 | + end | ||
7 | + | ||
3 | def initialize | 8 | def initialize |
4 | @port = Kalibro::Client::Port.new('ProjectResult') | 9 | @port = Kalibro::Client::Port.new('ProjectResult') |
5 | end | 10 | end |
plugins/mezuro/lib/mezuro_plugin/project_content.rb
@@ -17,18 +17,17 @@ class MezuroPlugin::ProjectContent < Article | @@ -17,18 +17,17 @@ class MezuroPlugin::ProjectContent < Article | ||
17 | end | 17 | end |
18 | end | 18 | end |
19 | 19 | ||
20 | - # FIXME is this really needed? | 20 | + # From ProjectClient |
21 | def project | 21 | def project |
22 | - Kalibro::Client::ProjectClient.new.project(title) | 22 | + @project ||= Kalibro::Client::ProjectClient.project(name) |
23 | end | 23 | end |
24 | 24 | ||
25 | def project_result | 25 | def project_result |
26 | - @project_result ||= Kalibro::Client::ProjectResultClient.new.last_result(title) | 26 | + @project_result ||= Kalibro::Client::ProjectResultClient.last_result(name) |
27 | end | 27 | end |
28 | 28 | ||
29 | def module_result(module_name) | 29 | def module_result(module_name) |
30 | - @module_client ||= Kalibro::Client::ModuleResultClient.new | ||
31 | - @module_client.module_result(title, module_name, project_result.date) | 30 | + @module_client ||= Kalibro::Client::ModuleResultClient.module_result(self, module_name) |
32 | end | 31 | end |
33 | 32 | ||
34 | after_save :send_project_to_service | 33 | after_save :send_project_to_service |
@@ -37,29 +36,12 @@ class MezuroPlugin::ProjectContent < Article | @@ -37,29 +36,12 @@ class MezuroPlugin::ProjectContent < Article | ||
37 | private | 36 | private |
38 | 37 | ||
39 | def send_project_to_service | 38 | def send_project_to_service |
40 | - Kalibro::Client::ProjectClient.save(create_project) | ||
41 | - Kalibro::Client::KalibroClient.process_project(title) | 39 | + Kalibro::Client::ProjectClient.save(self) |
40 | + Kalibro::Client::KalibroClient.process_project(name) | ||
42 | end | 41 | end |
43 | 42 | ||
44 | def remove_project_from_service | 43 | def remove_project_from_service |
45 | - Kalibro::Client::ProjectClient.remove(title) | ||
46 | - end | ||
47 | - | ||
48 | - def create_project | ||
49 | - project = Kalibro::Entities::Project.new | ||
50 | - project.name = title | ||
51 | - project.license = license | ||
52 | - project.description = description | ||
53 | - project.repository = create_repository | ||
54 | - project.configuration_name = configuration_name | ||
55 | - project | ||
56 | - end | ||
57 | - | ||
58 | - def create_repository | ||
59 | - repository = Kalibro::Entities::Repository.new | ||
60 | - repository.type = repository_type | ||
61 | - repository.address = repository_url | ||
62 | - repository | 44 | + Kalibro::Client::ProjectClient.remove(name) |
63 | end | 45 | end |
64 | 46 | ||
65 | end | 47 | end |
plugins/mezuro/test/fixtures/compound_metric_with_error_fixtures.rb
plugins/mezuro/test/fixtures/error_fixtures.rb
plugins/mezuro/test/fixtures/metric_result_fixtures.rb
plugins/mezuro/test/fixtures/module_result_fixtures.rb
plugins/mezuro/test/fixtures/project_fixtures.rb
plugins/mezuro/test/fixtures/project_result_fixtures.rb
plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb
1 | require 'test_helper' | 1 | require 'test_helper' |
2 | 2 | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_result_fixtures" | ||
4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" | ||
5 | + | ||
3 | class MezuroPluginProfileControllerTest < ActionController::TestCase | 6 | class MezuroPluginProfileControllerTest < ActionController::TestCase |
4 | 7 | ||
5 | def setup | 8 | def setup |
@@ -8,59 +11,46 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase | @@ -8,59 +11,46 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase | ||
8 | @response = ActionController::TestResponse.new | 11 | @response = ActionController::TestResponse.new |
9 | @profile = fast_create(Community) | 12 | @profile = fast_create(Community) |
10 | @profile_id = @profile.identifier | 13 | @profile_id = @profile.identifier |
11 | - end | ||
12 | 14 | ||
13 | -# def test_metrics_for_unknown_module | ||
14 | -# get :metrics, :profile => @profile_id, :id => 0 | ||
15 | -# assert_response 404 | ||
16 | -# end | 15 | + @module_result = ModuleResultFixtures.create |
16 | + @project_result = ProjectResultFixtures.qt_calculator | ||
17 | + @project = @project_result.project | ||
18 | + @project_content = create_project_content(@profile) | ||
19 | + end | ||
17 | 20 | ||
18 | -# def test_metric_unknown_module | ||
19 | -# get :metrics, :profile => @profile_id, :id => @project_content.id, :module_name => 'veryunlikelyname' | ||
20 | -# assert_response 404 | ||
21 | -# end | 21 | + def test_metrics_for_unknown_project |
22 | + get :metrics, :profile => @profile_id | ||
23 | + assert_response 404 | ||
24 | + end | ||
22 | 25 | ||
26 | + def test_metric_unknown_module | ||
27 | + get :metrics, :profile => @profile_id, :id => @project_content.id, :module_name => 'veryunlikelyname' | ||
28 | + assert_response 404 | ||
29 | + end | ||
23 | 30 | ||
24 | -# def test_metrics_for_known_module | ||
25 | -# @project_content = create_project_content(@profile) | ||
26 | -# get :metrics, :profile => @profile_id, :id => @project_content.id, :module_name => @project_content.name | ||
27 | -# assert_response 200 | ||
28 | -# # assert_tag # TODO | ||
29 | -# end | 31 | + should 'get metrics from a known module' do |
32 | + project_name = @project_content.name | ||
33 | + module_name = project_name | ||
34 | + Kalibro::Client::ProjectResultClient.expects(:last_result).with(project_name).returns(@project_result) | ||
35 | + Kalibro::Client::ModuleResultClient.expects(:module_result).with(@project_content, module_name). | ||
36 | + returns(@module_result) | ||
37 | + get :metrics, :profile => @profile_id, :id => @project_content.id, :module_name => module_name | ||
38 | + assert_response 200 | ||
39 | + # assert_tag # TODO | ||
40 | + end | ||
30 | 41 | ||
31 | protected | 42 | protected |
32 | 43 | ||
33 | # returns a new ProjectContent for the given profile | 44 | # returns a new ProjectContent for the given profile |
34 | def create_project_content(profile) | 45 | def create_project_content(profile) |
35 | - project_content = MezuroPlugin::ProjectContent.create!(:profile => profile, :name => 'foo') | ||
36 | - | ||
37 | - project = create_project(project_content.name) | ||
38 | - project_content.license = project.license | ||
39 | - project_content.description = project.description | ||
40 | - project_content.repository_type = project.repository.type | ||
41 | - project_content.repository_url = project.repository.address | ||
42 | - project_content.configuration_name = project.configuration_name | 46 | + project_content = MezuroPlugin::ProjectContent.new(:profile => profile, :name => @project.name) |
47 | + Kalibro::Client::ProjectClient.expects(:save).with(project_content) | ||
48 | + Kalibro::Client::KalibroClient.expects(:process_project).with(project_content.name) | ||
49 | + project_content.save | ||
43 | 50 | ||
44 | MezuroPlugin::ProjectContent.any_instance.stubs(:project_content).returns(project_content) | 51 | MezuroPlugin::ProjectContent.any_instance.stubs(:project_content).returns(project_content) |
45 | project_content | 52 | project_content |
46 | end | 53 | end |
47 | - | ||
48 | - def create_project(name) | ||
49 | - project = Kalibro::Entities::Project.new | ||
50 | - project.name = name | ||
51 | - project.license = 'GPL' | ||
52 | - project.description = 'testing' | ||
53 | - project.repository = crieate_repository | ||
54 | - project.configuration_name = 'Kalibro Default' | ||
55 | - project | ||
56 | - end | ||
57 | - | ||
58 | - def create_repository | ||
59 | - repository = Kalibro::Entities::Repository.new | ||
60 | - repository.type = 'git' | ||
61 | - repository.address = 'http://git.git' | ||
62 | - repository | ||
63 | - end | ||
64 | 54 | ||
65 | #TODO Adicionar module result manualmente | 55 | #TODO Adicionar module result manualmente |
66 | #TODO Ver testes do project content, refatorar o project content em cima dos testes | 56 | #TODO Ver testes do project content, refatorar o project content em cima dos testes |
plugins/mezuro/test/mezuro_test.rb
@@ -1,12 +0,0 @@ | @@ -1,12 +0,0 @@ | ||
1 | -require "test_helper" | ||
2 | - | ||
3 | -require File.dirname(__FILE__) + '/../controllers/mezuro_plugin_myprofile_controller' | ||
4 | - | ||
5 | -class MezuroTest < ActiveSupport::TestCase | ||
6 | - | ||
7 | - should 'create a mezuro project' do | ||
8 | - controller = MezuroPluginMyprofileController.new | ||
9 | - controller.create | ||
10 | - end | ||
11 | - | ||
12 | -end |
plugins/mezuro/test/unit/kalibro/client/project_client_test.rb
@@ -7,52 +7,45 @@ class ProjectClientTest < ActiveSupport::TestCase | @@ -7,52 +7,45 @@ class ProjectClientTest < ActiveSupport::TestCase | ||
7 | def setup | 7 | def setup |
8 | @port = mock | 8 | @port = mock |
9 | Kalibro::Client::Port.expects(:new).with('Project').returns(@port) | 9 | Kalibro::Client::Port.expects(:new).with('Project').returns(@port) |
10 | - @client = Kalibro::Client::ProjectClient.new | 10 | + @project = ProjectFixtures.qt_calculator |
11 | end | 11 | end |
12 | 12 | ||
13 | - should 'save project' do | ||
14 | - project = ProjectFixtures.qt_calculator | ||
15 | - @port.expects(:request).with(:save_project, {:project => project.to_hash}) | ||
16 | - @client.save(project) | ||
17 | - end | ||
18 | - | ||
19 | - should 'get project names (zero)' do | ||
20 | - @port.expects(:request).with(:get_project_names).returns({}) | ||
21 | - assert_equal [], @client.project_names | 13 | + should 'get project by name' do |
14 | + request_body = {:project_name => @project.name} | ||
15 | + response_hash = {:project => @project.to_hash} | ||
16 | + @port.expects(:request).with(:get_project, request_body).returns(response_hash) | ||
17 | + assert_equal @project, Kalibro::Client::ProjectClient.project(@project.name) | ||
22 | end | 18 | end |
23 | 19 | ||
24 | - should 'get project names (one)' do | ||
25 | - name = 'Qt-Calculator' | ||
26 | - @port.expects(:request).with(:get_project_names).returns({:project_name => name}) | ||
27 | - assert_equal [name], @client.project_names | 20 | + should 'save project' do |
21 | + create_project_content_mock | ||
22 | + @project.state = nil | ||
23 | + @port.expects(:request).with(:save_project, {:project => @project.to_hash}) | ||
24 | + Kalibro::Client::ProjectClient.save(@project_content) | ||
28 | end | 25 | end |
29 | 26 | ||
30 | - should 'get project names' do | ||
31 | - names = ['Hello World', 'Qt-Calculator'] | ||
32 | - @port.expects(:request).with(:get_project_names).returns({:project_name => names}) | ||
33 | - assert_equal names, @client.project_names | 27 | + should 'remove existent project from service' do |
28 | + @port.expects(:request).with(:get_project_names).returns({:project_name => @project.name}) | ||
29 | + @port.expects(:request).with(:remove_project, {:project_name => @project.name}) | ||
30 | + Kalibro::Client::ProjectClient.remove(@project.name) | ||
34 | end | 31 | end |
35 | 32 | ||
36 | - should 'get project by name' do | ||
37 | - project = ProjectFixtures.qt_calculator | ||
38 | - request_body = {:project_name => project.name} | ||
39 | - response_hash = {:project => project.to_hash} | ||
40 | - @port.expects(:request).with(:get_project, request_body).returns(response_hash) | ||
41 | - assert_equal project, @client.project(project.name) | 33 | + should 'not try to remove inexistent project from service' do |
34 | + @port.expects(:request).with(:get_project_names).returns({:project_name => 'Different project'}) | ||
35 | + @port.expects(:request).with(:remove_project, {:project_name => @project.name}).never | ||
36 | + Kalibro::Client::ProjectClient.remove(@project.name) | ||
42 | end | 37 | end |
43 | 38 | ||
44 | - should 'remove project by name' do | ||
45 | - name = 'ProjectClientTest' | ||
46 | - @port.expects(:request).with(:remove_project, {:project_name => name}) | ||
47 | - @client.remove(name) | ||
48 | - end | 39 | + private |
49 | 40 | ||
50 | - should 'instantiate for saving a project' do | ||
51 | - project = mock | ||
52 | - instance = mock | ||
53 | - Kalibro::Client::ProjectClient.expects(:new).returns(instance) | ||
54 | - instance.expects(:save).with(project) | ||
55 | - Kalibro::Client::ProjectClient.save(project) | 41 | + def create_project_content_mock |
42 | + @project_content = mock | ||
43 | + @project_content.expects(:name).returns(@project.name) | ||
44 | + @project_content.expects(:license).returns(@project.license) | ||
45 | + @project_content.expects(:description).returns(@project.description) | ||
46 | + @project_content.expects(:repository_type).returns(@project.repository.type) | ||
47 | + @project_content.expects(:repository_url).returns(@project.repository.address) | ||
48 | + @project_content.expects(:configuration_name).returns(@project.configuration_name) | ||
56 | end | 49 | end |
57 | 50 | ||
58 | end | 51 | end |
plugins/mezuro/test/unit/kalibro/client/project_result_client_test.rb
1 | require "test_helper" | 1 | require "test_helper" |
2 | 2 | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | 3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" |
4 | 4 | ||
5 | class ProjectResultClientTest < ActiveSupport::TestCase | 5 | class ProjectResultClientTest < ActiveSupport::TestCase |
6 | 6 |
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
@@ -31,13 +31,32 @@ class ProjectContentTest < ActiveSupport::TestCase | @@ -31,13 +31,32 @@ class ProjectContentTest < ActiveSupport::TestCase | ||
31 | assert_not_nil @content.to_html | 31 | assert_not_nil @content.to_html |
32 | end | 32 | end |
33 | 33 | ||
34 | + should 'get project from service' do | ||
35 | + Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(@project) | ||
36 | + assert_equal @project, @content.project | ||
37 | + end | ||
38 | + | ||
39 | + should 'get project result from service' do | ||
40 | + project_result = mock | ||
41 | + Kalibro::Client::ProjectResultClient.expects(:last_result).with(@content.name).returns(project_result) | ||
42 | + assert_equal project_result, @content.project_result | ||
43 | + end | ||
44 | + | ||
45 | + should 'get module result from service' do | ||
46 | + module_name = 'My module name' | ||
47 | + module_result = mock | ||
48 | + Kalibro::Client::ModuleResultClient.expects(:module_result).with(@content, module_name). | ||
49 | + returns(module_result) | ||
50 | + assert_equal module_result, @content.module_result(module_name) | ||
51 | + end | ||
52 | + | ||
34 | should 'run send project to service on after_save callback' do | 53 | should 'run send project to service on after_save callback' do |
35 | @content.expects :send_project_to_service | 54 | @content.expects :send_project_to_service |
36 | @content.run_callbacks :after_save | 55 | @content.run_callbacks :after_save |
37 | end | 56 | end |
38 | 57 | ||
39 | should 'send correct project to service' do | 58 | should 'send correct project to service' do |
40 | - Kalibro::Client::ProjectClient.expects(:save).with(@project) | 59 | + Kalibro::Client::ProjectClient.expects(:save).with(@content) |
41 | Kalibro::Client::KalibroClient.expects(:process_project).with(@project.name) | 60 | Kalibro::Client::KalibroClient.expects(:process_project).with(@project.name) |
42 | @content.send :send_project_to_service | 61 | @content.send :send_project_to_service |
43 | end | 62 | end |
plugins/mezuro/views/content_viewer/show_project.rhtml
1 | -<% @project_content = @page | 1 | +<% @project_content = @page |
2 | @project = @project_content.project %> | 2 | @project = @project_content.project %> |
3 | 3 | ||
4 | <table id="project_info"> | 4 | <table id="project_info"> |
@@ -35,4 +35,4 @@ | @@ -35,4 +35,4 @@ | ||
35 | 35 | ||
36 | <script type="text/javascript"> | 36 | <script type="text/javascript"> |
37 | jQuery(show_autoreload); | 37 | jQuery(show_autoreload); |
38 | -</script> | ||
39 | \ No newline at end of file | 38 | \ No newline at end of file |
39 | +</script> |