Commit 60ff8362b484f937529b39f3a272a99817ba8965

Authored by Alessandro Palmeira + Diego Araújo + João M. M. da Silva
Committed by Alessandro Palmeira
2 parents 1bd30704 922a3b8e

Merge branch 'refactoring_repository' into refactoring

Conflicts:
	plugins/mezuro/controllers/profile/mezuro_plugin_repository_controller.rb
	plugins/mezuro/lib/kalibro/configuration.rb
	plugins/mezuro/views/mezuro_plugin_repository/edit.html.erb
	plugins/mezuro/views/mezuro_plugin_repository/new.html.erb
plugins/mezuro/controllers/profile/mezuro_plugin_repository_controller.rb
... ... @@ -37,7 +37,8 @@ class MezuroPluginRepositoryController < MezuroPluginProfileController
37 37 @configuration_select = configurations.map do |configuration|
38 38 [configuration.name,configuration.id]
39 39 end
40   - @repository = @project_content.repositories.select{ |repository| repository.id == params[:repository_id].to_s }.first
  40 +
  41 + @repository = @project_content.repositories.select{ |repository| repository.id.to_s == params[:repository_id] }.first
41 42 end
42 43  
43 44 def update
... ... @@ -57,7 +58,7 @@ class MezuroPluginRepositoryController < MezuroPluginProfileController
57 58 project_content = profile.articles.find(params[:id])
58 59 @project_name = project_content.name
59 60 @repository = project_content.repositories.select{ |repository| repository.id == params[:repository_id].to_s }.first
60   - @configuration_name = Kalibro::Configuration.find(@repository.configuration_id).name
  61 + @configuration_name = Kalibro::Configuration.configuration_of(@repository.id).name
61 62 @processing = processing(@repository.id)
62 63 end
63 64  
... ... @@ -68,39 +69,12 @@ class MezuroPluginRepositoryController < MezuroPluginProfileController
68 69 if( repository.errors.empty? )
69 70 redirect_to "/#{profile.identifier}/#{project_content.name.downcase.gsub(/\s/, '-')}"
70 71 else
71   - raise repository.errors[0].message
72 72 redirect_to_error_page repository.errors[0].message
73 73 end
74 74 end
75 75  
76 76 private
77 77  
78   - def processing(repository_id)
79   - begin
80   - if Kalibro::Processing.has_ready_processing(repository_id)
81   - @processing ||= Kalibro::Processing.last_ready_processing_of(repository_id)
82   - else
83   - @processing = Kalibro::Processing.last_processing_of(repository_id)
84   - end
85   - rescue Exception => error
86   - errors.add_to_base(error.message)
87   - end
88   - @processing
89   - end
90   -
91   - def processing_with_date(repository_id, date)
92   - begin
93   - if Kalibro::Processing.has_processing_after(repository_id, date)
94   - @processing ||= Kalibro::Processing.first_processing_after(repository_id, date)
95   - elsif Kalibro::Processing.has_processing_before(repository_id, date)
96   - @processing ||= Kalibro::Processing.last_processing_before(repository_id, date)
97   - end
98   - rescue Exception => error
99   - errors.add_to_base(error.message)
100   - end
101   - @processing
102   - end
103   -
104 78 def module_result(repository_id, date = nil)
105 79 @processing ||= date.nil? ? processing(repository_id) : processing_with_date(repository_id, date)
106 80 begin
... ...
plugins/mezuro/lib/kalibro/configuration.rb
... ... @@ -9,7 +9,7 @@ class Kalibro::Configuration < Kalibro::Model
9 9 def self.all
10 10 response = request(:all_configurations)[:configuration]
11 11 response = [] if response.nil?
12   - response = [response] if response.is_a? (Hash)
  12 + response = [response] if response.is_a?(Hash)
13 13 response.map {|configuration| new configuration}
14 14 end
15 15  
... ...
plugins/mezuro/lib/kalibro/processing.rb
... ... @@ -2,6 +2,42 @@ class Kalibro::Processing < Kalibro::Model
2 2  
3 3 attr_accessor :id, :date, :state, :error, :process_time, :results_root_id
4 4  
  5 + def self.processing_of(repository_id)
  6 + if has_ready_processing(repository_id)
  7 + last_ready_processing_of(repository_id)
  8 + else
  9 + last_processing_of(repository_id)
  10 + end
  11 + end
  12 +
  13 + def self.processing_with_date_of(repository_id, date)
  14 + if has_processing_after(repository_id, date)
  15 + first_processing_after(repository_id, date)
  16 + elsif has_processing_before(repository_id, date)
  17 + last_processing_before(repository_id, date)
  18 + else
  19 + last_processing_of(repository_id)
  20 + end
  21 + end
  22 +
  23 + def date=(value)
  24 + @date = value.is_a?(String) ? DateTime.parse(value) : value
  25 + end
  26 +
  27 + def process_times=(value)
  28 + process_time=value
  29 + end
  30 +
  31 + def process_time=(value)
  32 + @process_time = Kalibro::ProcessTime.to_objects_array value
  33 + end
  34 +
  35 + def process_times
  36 + process_time
  37 + end
  38 +
  39 + private
  40 +
5 41 def self.has_processing(repository_id)
6 42 request(:has_processing, {:repository_id => repository_id})[:exists]
7 43 end
... ... @@ -42,20 +78,4 @@ class Kalibro::Processing < Kalibro::Model
42 78 new request(:last_processing_before, {:repository_id => repository_id, :date => date})[:processing]
43 79 end
44 80  
45   - def date=(value)
46   - @date = value.is_a?(String) ? DateTime.parse(value) : value
47   - end
48   -
49   - def process_times=(value)
50   - process_time=value
51   - end
52   -
53   - def process_time=(value)
54   - @process_time = Kalibro::ProcessTime.to_objects_array value
55   - end
56   -
57   - def process_times
58   - process_time
59   - end
60   -
61 81 end
... ...
plugins/mezuro/test/fixtures/configuration_fixtures.rb
... ... @@ -29,4 +29,8 @@ class ConfigurationFixtures
29 29 })
30 30 end
31 31  
  32 +def self.all
  33 + [configuration]
  34 +end
  35 +
32 36 end
... ...
plugins/mezuro/test/fixtures/repository_fixtures.rb
... ... @@ -20,4 +20,8 @@ class RepositoryFixtures
20 20 {: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}
21 21 end
22 22  
  23 + def self.types
  24 + ["SUBVERSION", "GIT"]
  25 + end
  26 +
23 27 end
... ...
plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb
1 1 require 'test_helper'
2 2  
3   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures"
4 3 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"
5   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"
  4 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures"
6 5 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures"
7 6 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures"
8 7  
... ... @@ -16,7 +15,7 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase
16 15  
17 16 @base_tool = BaseToolFixtures.base_tool
18 17 @base_tool_hash = BaseToolFixtures.base_tool_hash
19   - @metric = NativeMetricFixtures.amloc
  18 + @metric = MetricFixtures.amloc
20 19 @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration
21 20 @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash
22 21 @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration
... ...
plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb
1 1 require 'test_helper'
2 2  
3 3 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"
4   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"
  4 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures"
5 5 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures"
6 6 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures"
7 7  
... ... @@ -15,7 +15,7 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase
15 15  
16 16 @base_tool = BaseToolFixtures.base_tool
17 17 @base_tool_hash = BaseToolFixtures.base_tool_hash
18   - @metric = NativeMetricFixtures.amloc
  18 + @metric = MetricFixtures.amloc
19 19 @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration
20 20 @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash
21 21 @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration
... ...
plugins/mezuro/test/functional/myprofile/mezuro_plugin_range_controller_test.rb
1 1 require 'test_helper'
2 2  
3   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures"
4 4 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures"
5 5 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures"
6 6 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures"
... ... @@ -13,7 +13,7 @@ class MezuroPluginRangeControllerTest < ActionController::TestCase
13 13 @response = ActionController::TestResponse.new
14 14 @profile = fast_create(Community)
15 15  
16   - @metric = NativeMetricFixtures.amloc
  16 + @metric = MetricFixtures.amloc
17 17 @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration
18 18 @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash
19 19 @configuration = ConfigurationFixtures.configuration
... ...
plugins/mezuro/test/functional/profile/mezuro_plugin_project_controller_test.rb
1 1 require 'test_helper'
2 2  
3   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures"
4   -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures"
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/processing_fixtures"
  4 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/throwable_fixtures"
5 5 require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures"
6 6  
7 7 class MezuroPluginProjectControllerTest < ActionController::TestCase
... ... @@ -11,7 +11,7 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
11 11 @response = ActionController::TestResponse.new
12 12 @profile = fast_create(Community)
13 13  
14   - @project_result = ProjectResultFixtures.project_result
  14 + @project_result = ProcessingFixtures.project_result
15 15 @repository_url = RepositoryFixtures.repository.address
16 16 @project = @project_result.project
17 17 @date = "2012-04-13T20:39:41+04:00"
... ... @@ -30,7 +30,7 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
30 30 end
31 31  
32 32 should 'test project state with kalibro_error' do
33   - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})})
  33 + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ThrowableFixtures.throwable_hash})})
34 34 get :project_state, :profile => @profile.identifier, :id => @content.id
35 35 assert_response 200
36 36 assert_equal "ERROR", @response.body
... ... @@ -38,7 +38,7 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
38 38 end
39 39  
40 40 should 'test project error' do
41   - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})})
  41 + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ThrowableFixtures.throwable_hash})})
42 42 get :project_error, :profile => @profile.identifier, :id => @content.id
43 43 assert_response 200
44 44 assert_select('h3', 'ERROR')
... ... @@ -47,7 +47,7 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
47 47 end
48 48  
49 49 should 'test project result without date' do
50   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash})
  50 + Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash})
51 51 get :project_result, :profile => @profile.identifier, :id => @content.id, :date => nil
52 52 assert_equal @content, assigns(:content)
53 53 assert_equal @project_result.project.name, assigns(:project_result).project.name
... ... @@ -57,8 +57,8 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
57 57  
58 58 should 'test project results from a specific date' do
59 59 request_body = {:project_name => @project.name, :date => @date}
60   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true})
61   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash})
  60 + Kalibro::Processing.expects(:request).with("Processing", :has_results_before, request_body).returns({:has_results => true})
  61 + Kalibro::Processing.expects(:request).with("Processing", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash})
62 62 get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @date
63 63 assert_equal @content, assigns(:content)
64 64 assert_equal @project_result.project.name, assigns(:project_result).project.name
... ... @@ -67,7 +67,7 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
67 67 end
68 68  
69 69 should 'test project tree without date' do
70   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash})
  70 + Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash})
71 71 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash})
72 72 get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => nil
73 73 assert_equal @content, assigns(:content)
... ... @@ -80,8 +80,8 @@ class MezuroPluginProjectControllerTest &lt; ActionController::TestCase
80 80 should 'test project tree with a specific date' do
81 81 request_body = {:project_name => @project.name, :date => @project_result.date}
82 82 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash})
83   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true})
84   - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash})
  83 + Kalibro::Processing.expects(:request).with("Processing", :has_results_before, request_body).returns({:has_results => true})
  84 + Kalibro::Processing.expects(:request).with("Processing", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash})
85 85 get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date
86 86 assert_equal @content, assigns(:content)
87 87 assert_equal @project.name, assigns(:project_name)
... ...
plugins/mezuro/test/functional/profile/mezuro_plugin_repository_controller_test.rb 0 → 100644
... ... @@ -0,0 +1,99 @@
  1 +require 'test_helper'
  2 +
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/processing_fixtures"
  4 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/throwable_fixtures"
  5 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures"
  6 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_content_fixtures"
  7 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures"
  8 +
  9 +class MezuroPluginRepositoryControllerTest < ActionController::TestCase
  10 +
  11 + def setup
  12 + @controller = MezuroPluginRepositoryController.new
  13 + @request = ActionController::TestRequest.new
  14 + @response = ActionController::TestResponse.new
  15 + @profile = fast_create(Community)
  16 +
  17 + @configuration = ConfigurationFixtures.configuration
  18 + @repository_types = RepositoryFixtures.types
  19 + @all_configurations = ConfigurationFixtures.all
  20 + @repository = RepositoryFixtures.repository
  21 + @repository_hash = RepositoryFixtures.hash
  22 + @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => name)
  23 + @content.expects(:send_project_to_service).returns(nil)
  24 + @content.stubs(:solr_save)
  25 + @content.save
  26 + end
  27 +
  28 + should 'set variables to create a new repository' do
  29 + Kalibro::Repository.expects(:repository_types).returns(@repository_types)
  30 + Kalibro::Configuration.expects(:all).returns(@all_configurations)
  31 +
  32 + get :new, :profile => @profile.identifier, :id => @content.id
  33 +
  34 + assert_equal @content, assigns(:project_content)
  35 + assert_equal @repository_types, assigns(:repository_types)
  36 + assert_equal @all_configurations.first.name, assigns(:configuration_select).first.first
  37 + assert_equal @all_configurations.first.id, assigns(:configuration_select).first.last
  38 + end
  39 +
  40 + should 'create a repository' do
  41 + Kalibro::Repository.expects(:new).returns(@repository)
  42 + @repository.expects(:save).with(@content.project_id).returns(true)
  43 + get :create, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash
  44 + assert @repository.errors.empty?
  45 + assert_response :redirect
  46 + end
  47 +
  48 + should 'not create a repository' do
  49 + @repository.errors = [Exception.new]
  50 + Kalibro::Repository.expects(:new).returns(@repository)
  51 + @repository.expects(:save).with(@content.project_id).returns(false)
  52 + get :create, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash
  53 + assert !@repository.errors.empty?
  54 + assert_response :redirect
  55 + end
  56 +
  57 + should 'set variables to edit a repository' do
  58 + articles = mock
  59 + Kalibro::Repository.expects(:repository_types).returns(@repository_types)
  60 + Kalibro::Configuration.expects(:all).returns(@all_configurations)
  61 + Kalibro::Repository.expects(:repositories_of).with(@content.project_id).returns([@repository])
  62 +
  63 + get :edit, :profile => @profile.identifier, :id => @content.id, :repository_id => @repository.id
  64 +
  65 + assert_equal @content, assigns(:project_content)
  66 + assert_equal @repository_types, assigns(:repository_types)
  67 + assert_equal @all_configurations.first.name, assigns(:configuration_select).first.first
  68 + assert_equal @all_configurations.first.id, assigns(:configuration_select).first.last
  69 + assert_equal @repository, assigns(:repository)
  70 + end
  71 +
  72 + should 'update a repository' do
  73 + Kalibro::Repository.expects(:new).returns(@repository)
  74 + @repository.expects(:save).with(@content.project_id).returns(true)
  75 + get :update, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash
  76 + assert @repository.errors.empty?
  77 + assert_response :redirect
  78 + end
  79 +
  80 + should 'not update a repository' do
  81 + @repository.errors = [Exception.new]
  82 + Kalibro::Repository.expects(:new).returns(@repository)
  83 + @repository.expects(:save).with(@content.project_id).returns(false)
  84 + get :update, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash
  85 + assert !@repository.errors.empty?
  86 + assert_response :redirect
  87 + end
  88 +
  89 + should 'show a repository' do
  90 + Kalibro::Repository.expects(:repositories_of).with(@content.project_id).returns([@repository])
  91 + Kalibro::Configuration.expects(:configuration_of).with(@repository.id).returns(@configuration)
  92 +
  93 + assert_equal @content.name, assigns(:project_name)
  94 + assert_equal @repository, assigns(:repository)
  95 + @configuration_name = Kalibro::Configuration.find(@repository.configuration_id).name
  96 + @processing = processing(@repository.id)
  97 + end
  98 +
  99 +end
... ...
plugins/mezuro/views/mezuro_plugin_repository/edit.html.erb
... ... @@ -8,7 +8,6 @@
8 8 <%= f.label :name, "Name:" %>
9 9 <%= f.text_field :name %>
10 10 </p>
11   -
12 11 <p>
13 12 <%= f.label :description, "Description:" %>
14 13 <%= f.text_field :description %>
... ...