Commit 54bdf4c4714f25d0b36aa8e8b0bc6c75131a2859
Committed by
Paulo Meireles
1 parent
57daefcb
Exists in
master
and in
29 other branches
[Mezuro] Finished refactoring mezuro_profile controller functional tests.
Showing
6 changed files
with
94 additions
and
146 deletions
Show diff stats
plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb
... | ... | @@ -18,14 +18,14 @@ class MezuroPluginProfileController < ProfileController |
18 | 18 | def project_result |
19 | 19 | @content = profile.articles.find(params[:id]) |
20 | 20 | date = params[:date] |
21 | - @project_result = date.nil? ? @content.project_result : @content.get_date_result(date) | |
21 | + @project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) | |
22 | 22 | render :partial => 'content_viewer/project_result' |
23 | 23 | end |
24 | 24 | |
25 | 25 | def module_result |
26 | 26 | @content = profile.articles.find(params[:id]) |
27 | 27 | date = params[:date] |
28 | - date.nil? ? @content.project_result : @content.get_date_result(date) | |
28 | + date.nil? ? @content.project_result : @content.project_result_with_date(date) | |
29 | 29 | @module_result = @content.module_result(params[:module_name]) |
30 | 30 | render :partial => 'content_viewer/module_result' |
31 | 31 | end |
... | ... | @@ -33,7 +33,7 @@ class MezuroPluginProfileController < ProfileController |
33 | 33 | def project_tree |
34 | 34 | @content = profile.articles.find(params[:id]) |
35 | 35 | date = params[:date] |
36 | - project_result = date.nil? ? @content.project_result : @content.get_date_result(date) | |
36 | + project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) | |
37 | 37 | @project_name = @content.project.name |
38 | 38 | @source_tree = project_result.node_of(params[:module_name]) |
39 | 39 | render :partial =>'content_viewer/source_tree' | ... | ... |
plugins/mezuro/lib/kalibro/module_result.rb
... | ... | @@ -3,7 +3,7 @@ class Kalibro::ModuleResult < Kalibro::Model |
3 | 3 | attr_accessor :module, :date, :grade, :metric_result, :compound_metric_with_error |
4 | 4 | |
5 | 5 | def self.find_by_project_name_and_module_name_and_date(project_name, module_name, date) |
6 | - response = request( | |
6 | + new request( | |
7 | 7 | 'ModuleResult', |
8 | 8 | :get_module_result, |
9 | 9 | { |
... | ... | @@ -11,7 +11,6 @@ class Kalibro::ModuleResult < Kalibro::Model |
11 | 11 | :module_name => module_name, |
12 | 12 | :date => date_with_milliseconds(date) |
13 | 13 | })[:module_result] |
14 | - new response | |
15 | 14 | end |
16 | 15 | |
17 | 16 | def self.all_by_project_name_and_module_name(project_name, module_name) |
... | ... | @@ -20,7 +19,7 @@ class Kalibro::ModuleResult < Kalibro::Model |
20 | 19 | :get_result_history, |
21 | 20 | { |
22 | 21 | :project_name => project_name, |
23 | - :module_name => module_name, | |
22 | + :module_name => module_name | |
24 | 23 | })[:module_result] |
25 | 24 | Kalibro::ModuleResult.to_objects_array(response) |
26 | 25 | end | ... | ... |
plugins/mezuro/lib/kalibro/project.rb
plugins/mezuro/lib/kalibro/project_result.rb
... | ... | @@ -3,35 +3,31 @@ class Kalibro::ProjectResult < Kalibro::Model |
3 | 3 | attr_accessor :project, :date, :load_time, :analysis_time, :source_tree, :collect_time |
4 | 4 | |
5 | 5 | def self.last_result(project_name) |
6 | - last_result = request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] | |
7 | - new last_result | |
6 | + new request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] | |
8 | 7 | end |
9 | 8 | |
10 | 9 | def self.first_result(project_name) |
11 | - first_result = request('ProjectResult',:get_first_result_of, {:project_name => project_name})[:project_result] | |
12 | - new first_result | |
10 | + new request('ProjectResult', :get_first_result_of, {:project_name => project_name})[:project_result] | |
13 | 11 | end |
14 | 12 | |
15 | 13 | def self.first_result_after(project_name, date) |
16 | - first_result_after = request('ProjectResult',:get_first_result_after, {:project_name => project_name, :date => date})[:project_result] | |
17 | - new first_result_after | |
14 | + new request('ProjectResult', :get_first_result_after, {:project_name => project_name, :date => date})[:project_result] | |
18 | 15 | end |
19 | 16 | |
20 | 17 | def self.last_result_before(project_name, date) |
21 | - last_result_before = request('ProjectResult',:get_last_result_before, {:project_name => project_name, :date => date})[:project_result] | |
22 | - new last_result_before | |
18 | + new request('ProjectResult', :get_last_result_before, {:project_name => project_name, :date => date})[:project_result] | |
23 | 19 | end |
24 | 20 | |
25 | 21 | def self.has_results?(project_name) |
26 | - request('ProjectResult',:has_results_for, {:project_name => project_name})[:has_results] | |
22 | + request('ProjectResult', :has_results_for, {:project_name => project_name})[:has_results] | |
27 | 23 | end |
28 | 24 | |
29 | 25 | def self.has_results_before?(project_name, date) |
30 | - request('ProjectResult',:has_results_before, {:project_name => project_name, :date => date})[:has_results] | |
26 | + request('ProjectResult', :has_results_before, {:project_name => project_name, :date => date})[:has_results] | |
31 | 27 | end |
32 | 28 | |
33 | 29 | def self.has_results_after?(project_name, date) |
34 | - request('ProjectResult',:has_results_after, {:project_name => project_name, :date => date})[:has_results] | |
30 | + request('ProjectResult', :has_results_after, {:project_name => project_name, :date => date})[:has_results] | |
35 | 31 | end |
36 | 32 | |
37 | 33 | def project=(value) | ... | ... |
plugins/mezuro/lib/mezuro_plugin/project_content.rb
... | ... | @@ -35,9 +35,9 @@ class MezuroPlugin::ProjectContent < Article |
35 | 35 | end |
36 | 36 | end |
37 | 37 | |
38 | - def get_date_result(date) | |
38 | + def project_result_with_date(date) | |
39 | 39 | begin |
40 | - @project_result ||= Kalibro::ProjectResult.has_results_before?(name, date) ? Kalibro::ProjectResult.last_result_before?(name, date) : | |
40 | + @project_result ||= Kalibro::ProjectResult.has_results_before?(name, date) ? Kalibro::ProjectResult.last_result_before(name, date) : | |
41 | 41 | Kalibro::ProjectResult.first_result_after(name, date) |
42 | 42 | rescue Exception => error |
43 | 43 | errors.add_to_base(error.message) |
... | ... | @@ -46,11 +46,11 @@ Kalibro::ProjectResult.first_result_after(name, date) |
46 | 46 | |
47 | 47 | def module_result(module_name) |
48 | 48 | module_name = project.name if module_name.nil? |
49 | - @module_client ||= module_result_client.module_result(project.name, module_name, project_result.date) | |
49 | + @module_client ||= Kalibro::ModuleResult.find_by_project_name_and_module_name_and_date(project.name, module_name, @project_result.date) | |
50 | 50 | end |
51 | 51 | |
52 | 52 | def result_history(module_name) |
53 | - @result_history ||= module_result_client.result_history(project.name, module_name) | |
53 | + @result_history ||= Kalibro::ModuleResult.all_by_project_name_and_module_name(project.name, module_name) | |
54 | 54 | end |
55 | 55 | |
56 | 56 | after_save :send_project_to_service |
... | ... | @@ -78,7 +78,7 @@ Kalibro::ProjectResult.first_result_after(name, date) |
78 | 78 | |
79 | 79 | def send_project_to_service |
80 | 80 | begin |
81 | - Kalibro::Project.create(self).save | |
81 | + Kalibro::Project.create(self) | |
82 | 82 | Kalibro::Kalibro.process_project(name, periodicity_in_days) |
83 | 83 | rescue Exception => error |
84 | 84 | errors.add_to_base(error.message) |
... | ... | @@ -94,11 +94,4 @@ Kalibro::ProjectResult.first_result_after(name, date) |
94 | 94 | end |
95 | 95 | end |
96 | 96 | |
97 | - def module_result_client | |
98 | - begin | |
99 | - @module_result_client ||= Kalibro::Client::ModuleResultClient.new | |
100 | - rescue Exception => error | |
101 | - errors.add_to_base(error.message) | |
102 | - end | |
103 | - end | |
104 | 97 | end | ... | ... |
plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb
... | ... | @@ -13,167 +13,123 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase |
13 | 13 | @response = ActionController::TestResponse.new |
14 | 14 | @profile = fast_create(Community) |
15 | 15 | |
16 | - @project_result = ProjectResultFixtures.qt_calculator | |
17 | - @module_result = ModuleResultFixtures.create | |
16 | + @project_result = ProjectResultFixtures.project_result | |
17 | + @module_result = ModuleResultFixtures.module_result | |
18 | 18 | @repository_url = RepositoryFixtures.repository.address |
19 | 19 | @project = @project_result.project |
20 | - @name = @project.name | |
21 | - | |
22 | 20 | @date = "2012-04-13T20:39:41+04:00" |
23 | - | |
21 | + | |
22 | + Kalibro::Project.expects(:all_names).returns([]) | |
23 | + @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) | |
24 | + @content.expects(:send_project_to_service).returns(nil) | |
25 | + @content.save | |
24 | 26 | end |
25 | 27 | |
26 | - should 'not find project state for inexistent project content' do | |
27 | - get :project_state, :profile => '', :id => -1 | |
28 | - assert_response 404 | |
29 | - end | |
30 | - | |
31 | - should 'get project state' do | |
32 | - create_project_content | |
33 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
28 | + should 'test project state without error' do | |
29 | + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) | |
34 | 30 | get :project_state, :profile => @profile.identifier, :id => @content.id |
35 | 31 | assert_response 200 |
32 | + assert_equal @content, assigns(:content) | |
36 | 33 | end |
37 | 34 | |
38 | - should 'get error state if project has error' do | |
39 | - create_project_content | |
40 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
41 | - @project.expects(:error).returns(ErrorFixtures.create) | |
35 | + should 'test project state with error' do | |
36 | + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) | |
42 | 37 | get :project_state, :profile => @profile.identifier, :id => @content.id |
43 | 38 | assert_response 200 |
39 | + assert_equal "ERROR", @response.body | |
40 | + assert_equal @content, assigns(:content) | |
44 | 41 | end |
45 | 42 | |
46 | - should 'not find content in project error for inexistent project content' do | |
47 | - get :project_error, :profile => '', :id => -1 | |
48 | - assert_response 404 | |
49 | - end | |
50 | - | |
51 | - should 'get project error' do | |
52 | - create_project_content | |
53 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
54 | - @project.expects(:error).returns(ErrorFixtures.create) | |
43 | + should 'test project error' do | |
44 | + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) | |
55 | 45 | get :project_error, :profile => @profile.identifier, :id => @content.id |
56 | 46 | assert_response 200 |
57 | 47 | assert_select('h3', 'ERROR') |
48 | + assert_equal @content, assigns(:content) | |
49 | + assert_equal @project.name, assigns(:project).name | |
58 | 50 | end |
59 | 51 | |
60 | - should 'not find project result for inexistent project content' do | |
61 | - get :project_result, :profile => '', :id => -1 | |
62 | - assert_response 404 | |
63 | - end | |
64 | - | |
65 | - should 'get project results without date' do | |
66 | - create_project_content | |
67 | - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) | |
68 | - get :project_result, :profile => @profile.identifier, :id => @content.id | |
52 | + should 'test project result without date' do | |
53 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | |
54 | + get :project_result, :profile => @profile.identifier, :id => @content.id, :date => nil | |
55 | + assert_equal @content, assigns(:content) | |
56 | + assert_equal @project_result.project.name, assigns(:project_result).project.name | |
69 | 57 | assert_response 200 |
70 | 58 | assert_select('h4', 'Last Result') |
71 | 59 | end |
72 | 60 | |
73 | - should 'get project results from a specific date' do | |
74 | - create_project_content | |
75 | - mock_project_result | |
76 | - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @project_result.date | |
61 | + should 'test project results from a specific date' do | |
62 | + request_body = {:project_name => @project.name, :date => @date} | |
63 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | |
64 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | |
65 | + get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @date | |
66 | + assert_equal @content, assigns(:content) | |
67 | + assert_equal @project_result.project.name, assigns(:project_result).project.name | |
77 | 68 | assert_response 200 |
69 | + assert_select('h4', 'Last Result') | |
78 | 70 | end |
79 | 71 | |
80 | - should 'not find module result for inexistent project content' do | |
81 | - get :module_result, :profile => '', :id => -1, :module_name => '' | |
82 | - assert_response 404 | |
83 | - end | |
84 | 72 | |
85 | 73 | should 'get module result without date' do |
86 | - create_project_content | |
87 | - mock_module_result | |
88 | - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) | |
89 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
90 | - get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name | |
74 | + date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) | |
75 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | |
76 | + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}).returns({:module_result => @module_result.to_hash}) | |
77 | + get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name, :date => nil | |
78 | + assert_equal @content, assigns(:content) | |
79 | + assert_equal @module_result.grade, assigns(:module_result).grade | |
91 | 80 | assert_response 200 |
92 | 81 | assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') |
93 | 82 | end |
94 | 83 | |
95 | - should 'get module result from a specific date' do | |
96 | - create_project_content | |
97 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
98 | - mock_module_result | |
99 | - mock_project_result | |
100 | - get :module_result, :profile => @profile.identifier, :id => @content.id, :date => @project_result.date, :module_name => @name | |
101 | - assert_response 200 | |
102 | - assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | |
103 | - end | |
104 | - | |
105 | - should 'not find project tree for inexistent project content' do | |
106 | - get :project_tree, :profile => '', :id => -1, :module_name => '' | |
107 | - assert_response 404 | |
84 | + should 'get module result with a specific date' do | |
85 | + date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) | |
86 | + request_body = {:project_name => @project.name, :date => @project_result.date} | |
87 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | |
88 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | |
89 | + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}).returns({:module_result => @module_result.to_hash}) | |
90 | + get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date | |
91 | + assert_equal @content, assigns(:content) | |
92 | + assert_equal @module_result.grade, assigns(:module_result).grade | |
93 | + assert_response 200 | |
94 | + assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | |
108 | 95 | end |
109 | 96 | |
110 | - should 'get project tree without date' do | |
111 | - create_project_content | |
112 | - Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) | |
113 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
114 | - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @name | |
97 | + should 'test project tree without date' do | |
98 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | |
99 | + get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => nil | |
100 | + assert_equal @content, assigns(:content) | |
101 | + assert_equal @project.name, assigns(:project_name) | |
102 | + assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name | |
115 | 103 | assert_response 200 |
116 | 104 | assert_select('h2', /Qt-Calculator/) |
117 | 105 | end |
118 | 106 | |
119 | - should 'get project tree from a specific date' do | |
120 | - create_project_content | |
121 | - mock_project_result | |
122 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
123 | - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @name, :date => "2012-04-13T20:39:41+04:00" | |
107 | + should 'test project tree with a specific date' do | |
108 | + request_body = {:project_name => @project.name, :date => @project_result.date} | |
109 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | |
110 | + Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | |
111 | + get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date | |
112 | + assert_equal @content, assigns(:content) | |
113 | + assert_equal @project.name, assigns(:project_name) | |
114 | + assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name | |
124 | 115 | assert_response 200 |
125 | 116 | end |
126 | 117 | |
127 | - should 'get grade history' do | |
128 | - create_project_content | |
129 | - mock_module_result_history | |
130 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
131 | - get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @name | |
132 | - assert_response 200 | |
133 | - end | |
134 | - | |
135 | - should 'not find metrics history for inexistent project content' do | |
136 | - get :module_metrics_history, :profile => '', :id => -1, :module_name => '' | |
137 | - assert_response 404 | |
138 | - end | |
139 | - #copied from 'get grade history' test | |
140 | - should 'get metrics history' do | |
141 | - create_project_content | |
142 | - mock_module_result_history | |
143 | - Kalibro::Client::ProjectClient.expects(:project).with(@name).returns(@project) | |
144 | - get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @name, | |
118 | + should 'test module metrics history' do | |
119 | + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) | |
120 | + get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, | |
145 | 121 | :metric_name => @module_result.metric_result.first.metric.name.delete("() ") |
122 | + assert_equal @content, assigns(:content) | |
123 | + assert_equal [@module_result.metric_result[0].value], assigns(:score_history) | |
146 | 124 | assert_response 200 |
147 | 125 | end |
148 | - | |
149 | - private | |
150 | - | |
151 | - def create_project_content | |
152 | - client = mock | |
153 | - @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @name) | |
154 | - @content.expects(:send_project_to_service).returns(nil) | |
155 | - Kalibro::Client::ProjectClient.expects(:new).returns(client) | |
156 | - @content.repository_url = @repository_url | |
157 | - client.expects(:project_names).returns([]) | |
158 | - @content.save | |
159 | - end | |
160 | 126 | |
161 | - def mock_project_result | |
162 | - project_result_client = mock | |
163 | - Kalibro::Client::ProjectResultClient.expects(:new).returns(project_result_client) | |
164 | - project_result_client.expects(:has_results_before).returns(true) | |
165 | - project_result_client.expects(:last_result_before).returns(@project_result) | |
166 | - end | |
167 | - | |
168 | - def mock_module_result | |
169 | - module_result_client = mock | |
170 | - Kalibro::Client::ModuleResultClient.expects(:new).returns(module_result_client) | |
171 | - module_result_client.expects(:module_result).with(@name, @name, @project_result.date).returns(@module_result) | |
127 | + should 'test grade history' do | |
128 | + Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) | |
129 | + get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name | |
130 | + assert_equal @content, assigns(:content) | |
131 | + assert_equal [@module_result.grade], assigns(:score_history) | |
132 | + assert_response 200 | |
172 | 133 | end |
173 | 134 | |
174 | - def mock_module_result_history | |
175 | - module_result_client = mock | |
176 | - module_result_client.expects(:result_history).with(@name, @name).returns([@module_result]) | |
177 | - Kalibro::Client::ModuleResultClient.expects(:new).returns(module_result_client) | |
178 | - end | |
179 | 135 | end | ... | ... |