Commit cd669e2b66afb16510973ed3641f8fa77dc14613
Exists in
colab
and in
4 other branches
Merge pull request #287 from mezuro/hotspot_listing
Hotspot listing
Showing
72 changed files
with
634 additions
and
368 deletions
Show diff stats
.travis.yml
... | ... | @@ -5,10 +5,12 @@ addons: |
5 | 5 | postgresql: "9.3" |
6 | 6 | |
7 | 7 | before_script: |
8 | - - git clone https://github.com/mezuro/kalibro_install.git -b v3.6 kalibro_install | |
8 | + - git clone https://github.com/mezuro/kalibro_install.git -b v4.0 kalibro_install | |
9 | 9 | - pushd kalibro_install |
10 | 10 | # Remove bugged libzmq3 package, see https://github.com/travis-ci/travis-ci/issues/982 and https://github.com/travis-ci/travis-ci/issues/1715 for details |
11 | 11 | - sudo apt-get remove libzmq3 |
12 | + - export KALIBRO_PROCESSOR_VERSION=v1.1.2 | |
13 | + - export KALIBRO_CONFIGURATIONS_VERSION=v1.2.0 | |
12 | 14 | - bash install.sh |
13 | 15 | - popd |
14 | 16 | - cp config/database.yml.sample config/database.yml | ... | ... |
Gemfile
Gemfile.lock
... | ... | @@ -119,7 +119,7 @@ GEM |
119 | 119 | factory_girl_rails (4.5.0) |
120 | 120 | factory_girl (~> 4.5.0) |
121 | 121 | railties (>= 3.0.0) |
122 | - faraday (0.9.1) | |
122 | + faraday (0.9.2) | |
123 | 123 | multipart-post (>= 1.2, < 3) |
124 | 124 | faraday_middleware (0.10.0) |
125 | 125 | faraday (>= 0.7.4, < 0.10) |
... | ... | @@ -152,7 +152,7 @@ GEM |
152 | 152 | railties (>= 3.2) |
153 | 153 | sprockets-rails |
154 | 154 | json (1.8.3) |
155 | - kalibro_client (1.4.1) | |
155 | + kalibro_client (2.1.2) | |
156 | 156 | activesupport (>= 2.2.1) |
157 | 157 | faraday_middleware (~> 0.10.0) |
158 | 158 | konacha (3.7.0) |
... | ... | @@ -353,7 +353,7 @@ DEPENDENCIES |
353 | 353 | jquery-rails |
354 | 354 | jquery-ui-rails (~> 5.0.0) |
355 | 355 | js-routes (~> 1.1.0) |
356 | - kalibro_client (~> 1.4) | |
356 | + kalibro_client (~> 2.1.2) | |
357 | 357 | konacha |
358 | 358 | less-rails (~> 2.7.0) |
359 | 359 | mocha | ... | ... |
app/assets/javascripts/module/tree.js.coffee
1 | 1 | class Module.Tree |
2 | 2 | @load: (loading_html, module_id) -> |
3 | + # FIXME: The messages we send on loading_html are the same already | |
4 | + # shown on the Repository's show page | |
3 | 5 | $('div#module_tree').html(loading_html) |
4 | 6 | $('div#metric_results').html(loading_html) |
7 | + $('div#hotspot_metric_results').html(loading_html) | |
5 | 8 | $.post Routes.module_tree_path(module_id) | ... | ... |
app/controllers/compound_metric_configurations_controller.rb
... | ... | @@ -7,7 +7,7 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsControlle |
7 | 7 | respond_to do |format| |
8 | 8 | create_and_redir(format) |
9 | 9 | end |
10 | - Rails.cache.delete("#{params[:kalibro_configuration_id].to_i}_metric_configurations") | |
10 | + Rails.cache.delete("#{params[:kalibro_configuration_id].to_i}_tree_metric_configurations") | |
11 | 11 | end |
12 | 12 | |
13 | 13 | def show |
... | ... | @@ -30,7 +30,7 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsControlle |
30 | 30 | else |
31 | 31 | failed_action(format, 'edit') |
32 | 32 | end |
33 | - Rails.cache.delete("#{@compound_metric_configuration.kalibro_configuration_id}_metric_configurations") | |
33 | + Rails.cache.delete("#{@compound_metric_configuration.kalibro_configuration_id}_tree_metric_configurations") | |
34 | 34 | end |
35 | 35 | end |
36 | 36 | ... | ... |
app/controllers/kalibro_configurations_controller.rb
... | ... | @@ -28,8 +28,11 @@ class KalibroConfigurationsController < ApplicationController |
28 | 28 | # GET /kalibro_configurations/1 |
29 | 29 | # GET /kalibro_configurations/1.json |
30 | 30 | def show |
31 | - Rails.cache.fetch("#{@kalibro_configuration.id}_metric_configurations") do | |
32 | - @kalibro_configuration.metric_configurations | |
31 | + Rails.cache.fetch("#{@kalibro_configuration.id}_tree_metric_configurations") do | |
32 | + @kalibro_configuration.tree_metric_configurations | |
33 | + end | |
34 | + Rails.cache.fetch("#{@kalibro_configuration.id}_hotspot_metric_configurations") do | |
35 | + @kalibro_configuration.hotspot_metric_configurations | |
33 | 36 | end |
34 | 37 | end |
35 | 38 | ... | ... |
app/controllers/metric_configurations_controller.rb
... | ... | @@ -7,7 +7,7 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
7 | 7 | |
8 | 8 | def new |
9 | 9 | super |
10 | - # find_by_name throws an exception instead of returning nil, unlike ActiveRecord's API | |
10 | + # FIXME: find_by_name throws an exception instead of returning nil, unlike ActiveRecord's API | |
11 | 11 | metric_configuration.metric = KalibroClient::Entities::Processor::MetricCollectorDetails.find_by_name(params[:metric_collector_name]).find_metric_by_code params[:metric_code] |
12 | 12 | @reading_groups = ReadingGroup.public_or_owned_by_user(current_user).map { |reading_group| |
13 | 13 | [reading_group.name, reading_group.id] |
... | ... | @@ -20,11 +20,11 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
20 | 20 | respond_to do |format| |
21 | 21 | create_and_redir(format) |
22 | 22 | end |
23 | - Rails.cache.delete("#{params[:kalibro_configuration_id]}_metric_configurations") | |
23 | + clear_caches | |
24 | 24 | end |
25 | 25 | |
26 | 26 | def edit |
27 | - #FIXME: set the configuration id just once! | |
27 | + # FIXME: set the configuration id just once! | |
28 | 28 | @kalibro_configuration_id = params[:kalibro_configuration_id] |
29 | 29 | @metric_configuration.kalibro_configuration_id = @kalibro_configuration_id |
30 | 30 | @reading_groups = ReadingGroup.public_or_owned_by_user(current_user).map { |reading_group| |
... | ... | @@ -38,7 +38,7 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
38 | 38 | if @metric_configuration.update(metric_configuration_params) |
39 | 39 | format.html { redirect_to(kalibro_configuration_path(@metric_configuration.kalibro_configuration_id), notice: t('successfully_updated', :record => t(metric_configuration.class))) } |
40 | 40 | format.json { head :no_content } |
41 | - Rails.cache.delete("#{@metric_configuration.kalibro_configuration_id}_metric_configurations") | |
41 | + clear_caches | |
42 | 42 | else |
43 | 43 | failed_action(format, 'edit') |
44 | 44 | end |
... | ... | @@ -51,7 +51,7 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
51 | 51 | format.html { redirect_to kalibro_configuration_path(params[:kalibro_configuration_id]) } |
52 | 52 | format.json { head :no_content } |
53 | 53 | end |
54 | - Rails.cache.delete("#{params[:kalibro_configuration_id]}_metric_configurations") | |
54 | + clear_caches | |
55 | 55 | end |
56 | 56 | |
57 | 57 | protected |
... | ... | @@ -67,7 +67,12 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
67 | 67 | |
68 | 68 | private |
69 | 69 | |
70 | - # Duplicated code on create and update actions extracted here | |
70 | + def clear_caches | |
71 | + Rails.cache.delete("#{params[:kalibro_configuration_id]}_tree_metric_configurations") | |
72 | + Rails.cache.delete("#{params[:kalibro_configuration_id]}_hotspot_metric_configurations") | |
73 | + end | |
74 | + | |
75 | + # FIXME: Duplicated code on create and update actions extracted here | |
71 | 76 | def failed_action(format, destiny_action) |
72 | 77 | @kalibro_configuration_id = params[:kalibro_configuration_id] |
73 | 78 | |
... | ... | @@ -75,7 +80,7 @@ class MetricConfigurationsController < BaseMetricConfigurationsController |
75 | 80 | format.json { render json: @metric_configuration.kalibro_errors, status: :unprocessable_entity } |
76 | 81 | end |
77 | 82 | |
78 | - #Code extracted from create action | |
83 | + # Code extracted from create action | |
79 | 84 | def create_and_redir(format) |
80 | 85 | if @metric_configuration.save |
81 | 86 | format.html { redirect_to kalibro_configuration_path(@metric_configuration.kalibro_configuration_id), notice: t('successfully_created', :record => t(metric_configuration.class)) } | ... | ... |
app/models/module_result.rb
1 | 1 | class ModuleResult < KalibroClient::Entities::Processor::ModuleResult |
2 | 2 | def metric_history(name) |
3 | - history = KalibroClient::Entities::Processor::MetricResult.history_of(name, self.id, processing.repository_id) | |
3 | + history = KalibroClient::Entities::Processor::TreeMetricResult.history_of(name, self.id, processing.repository_id) | |
4 | 4 | grade_history = Hash.new |
5 | 5 | |
6 | 6 | history.each { |date_metric_result| grade_history[date_metric_result.date] = date_metric_result.metric_result.value } | ... | ... |
app/views/kalibro_configurations/_metric_configurations.html.erb
1 | 1 | <tr> |
2 | 2 | <td><%= metric_configuration.metric.name %></td> |
3 | 3 | <td><%= metric_configuration.metric.code %></td> |
4 | - <td><%= metric_configuration.weight %></td> | |
4 | + <% unless metric_configuration.metric.is_a? KalibroClient::Entities::Miscellaneous::HotspotMetric %> | |
5 | + <td><%= metric_configuration.weight %></td> | |
6 | + <% end %> | |
5 | 7 | <td> |
6 | 8 | <%= link_to_show_page(metric_configuration, @kalibro_configuration.id) %> |
7 | 9 | </td> | ... | ... |
app/views/kalibro_configurations/_no_metric_configurations.html.erb
1 | 1 | <tr> |
2 | 2 | <% col_number = kalibro_configuration_owner?(@kalibro_configuration.id) ? 5 : 3 %> |
3 | - <td colspan="<%= col_number %>"><%= t('no_metric_configurations') %></td> | |
4 | -</tr> | |
5 | 3 | \ No newline at end of file |
4 | + <td colspan="<%= col_number %>"> | |
5 | + <%= t(message) %> | |
6 | + </td> | |
7 | +</tr> | ... | ... |
app/views/kalibro_configurations/show.html.erb
... | ... | @@ -8,13 +8,13 @@ |
8 | 8 | </p> |
9 | 9 | |
10 | 10 | <hr> |
11 | -<div id="metrics"> | |
12 | -<h2><%= t('metric').pluralize %></h2> | |
13 | 11 | <% if kalibro_configuration_owner? @kalibro_configuration.id %> |
14 | 12 | <%= link_to t_action(:add, MetricConfiguration), kalibro_configuration_choose_metric_path(@kalibro_configuration.id), class: 'btn btn-info' %> |
15 | 13 | <% end %> |
14 | +<div id="tree_metrics"> | |
15 | +<h2><%= t('tree_metric').pluralize %></h2> | |
16 | 16 | |
17 | -<table class="table table-hover"> | |
17 | +<table class="table table-hover" id="tree_metric_configurations"> | |
18 | 18 | <thead> |
19 | 19 | <tr> |
20 | 20 | <th><%= t('metric') %></th> |
... | ... | @@ -24,10 +24,10 @@ |
24 | 24 | </tr> |
25 | 25 | </thead> |
26 | 26 | <tbody> |
27 | - <% if Rails.cache.read("#{@kalibro_configuration.id}_metric_configurations").empty? %> | |
28 | - <%= render partial: 'no_metric_configurations' %> | |
27 | + <% if Rails.cache.read("#{@kalibro_configuration.id}_tree_metric_configurations").empty? %> | |
28 | + <%= render partial: 'no_metric_configurations', locals: { message: 'no_tree_metric_configurations' } %> | |
29 | 29 | <% else %> |
30 | - <%= render partial: 'metric_configurations', collection: Rails.cache.read("#{@kalibro_configuration.id}_metric_configurations"), as: :metric_configuration %> | |
30 | + <%= render partial: 'metric_configurations', collection: Rails.cache.read("#{@kalibro_configuration.id}_tree_metric_configurations"), as: :metric_configuration %> | |
31 | 31 | <% end %> |
32 | 32 | </tbody> |
33 | 33 | </table> |
... | ... | @@ -35,6 +35,28 @@ |
35 | 35 | |
36 | 36 | <hr> |
37 | 37 | |
38 | +<div id="hotspot_metrics"> | |
39 | +<h2><%= t('hotspot_metric').pluralize %></h2> | |
40 | + | |
41 | +<table class="table table-hover" id="hotspot_metric_configurations"> | |
42 | + <thead> | |
43 | + <tr> | |
44 | + <th><%= t('metric') %></th> | |
45 | + <th><%= t('code') %></th> | |
46 | + <th colspan="2"></th> | |
47 | + </tr> | |
48 | + </thead> | |
49 | + <tbody> | |
50 | + <% if Rails.cache.read("#{@kalibro_configuration.id}_hotspot_metric_configurations").empty? %> | |
51 | + <%= render partial: 'no_metric_configurations', locals: { message: 'no_hotspot_metric_configurations' } %> | |
52 | + <% else %> | |
53 | + <%= render partial: 'metric_configurations', collection: Rails.cache.read("#{@kalibro_configuration.id}_hotspot_metric_configurations"), as: :metric_configuration %> | |
54 | + <% end %> | |
55 | + </tbody> | |
56 | +</table> | |
57 | +</div> | |
58 | + | |
59 | +<hr> | |
38 | 60 | <p> |
39 | 61 | <%= link_to t('back'), kalibro_configurations_path, class: 'btn btn-default' %> |
40 | 62 | <% if kalibro_configuration_owner? @kalibro_configuration.id %> | ... | ... |
... | ... | @@ -0,0 +1,15 @@ |
1 | +<table class="table table-hover metric_results"> | |
2 | + <thead> | |
3 | + <tr> | |
4 | + <th><%= t('activemodel.attributes.hotspot_metric_result.module_result.module.name') %></th> | |
5 | + <th><%= t('activemodel.attributes.hotspot_metric_result.line') %></th> | |
6 | + <th><%= t('activemodel.attributes.hotspot_metric_result.message') %></th> | |
7 | + </tr> | |
8 | + </thead> | |
9 | + | |
10 | + <tbody> | |
11 | + <% cache("#{@root_module_result.id}_hotspot_results") do %> | |
12 | + <%= render partial: 'hotspot_metric_result', collection: @root_module_result.hotspot_metric_results, locals: {module_result: @root_module_result} %> | |
13 | + <% end %> | |
14 | + </tbody> | |
15 | +</table> | ... | ... |
app/views/modules/_metric_result.html.erb
1 | 1 | <% metric_configuration = metric_result.metric_configuration %> |
2 | -<% unless metric_configuration.kalibro_ranges.nil? %> | |
2 | +<% unless metric_configuration.metric.type == "HotspotMetricSnapshot" %> | |
3 | 3 | <% range_snapshot = find_range_snapshot(metric_result) |
4 | 4 | metric_name = metric_configuration.metric.name |
5 | 5 | %> |
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | </tr> |
16 | 16 | <tr id="container<%= metric_result.id %>" style="display: none"> |
17 | 17 | <td colspan="4"> |
18 | - <span id="loader_container<%= metric_result.id %>"><%= image_tag 'loader.gif' %> <%= t('loading_data') %></span> | |
18 | + <span id="loader_container<%= metric_result.id %>"><%= image_tag 'loader.gif' %> <%= t('repository.show.loading') %></span> | |
19 | 19 | <canvas id="container<%= metric_result.id %>" class="graphic_container" style="display: none"></canvas> |
20 | 20 | </td> |
21 | 21 | </tr> | ... | ... |
app/views/modules/_metric_results.html.erb
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | |
11 | 11 | <tbody> |
12 | 12 | <% cache("#{@root_module_result.id}_results") do %> |
13 | - <%= render partial: 'metric_result', collection: @root_module_result.metric_results, locals: {module_result: @root_module_result} %> | |
13 | + <%= render partial: 'metric_result', collection: @root_module_result.tree_metric_results, locals: {module_result: @root_module_result} %> | |
14 | 14 | <% end %> |
15 | 15 | </tbody> |
16 | 16 | </table> | ... | ... |
app/views/modules/_module_result.html.erb
... | ... | @@ -7,6 +7,6 @@ |
7 | 7 | <% end %> |
8 | 8 | <%= link_to format_module_name(module_result.kalibro_module.name), "#module_#{module_result.id}", onClick: "Module.Tree.load('#{escape_javascript(image_tag 'loader.gif')} #{escape_javascript(t('loading_data'))}', #{module_result.id});" %> |
9 | 9 | </td> |
10 | - <td><%= module_result.kalibro_module.granularity %></td> | |
10 | + <td><%= module_result.kalibro_module.granularity["type"] %></td> | |
11 | 11 | <td><%= format_grade(module_result.grade) %></td> |
12 | 12 | </tr> | ... | ... |
app/views/modules/_module_tree.html.erb
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | </p> |
5 | 5 | <p> |
6 | 6 | <strong><%= KalibroModule.human_attribute_name('granularity') %>:</strong> |
7 | - <%= @root_module_result.kalibro_module.granularity %> | |
7 | + <%= @root_module_result.kalibro_module.granularity["type"] %> | |
8 | 8 | </p> |
9 | 9 | <p> |
10 | 10 | <strong><%= KalibroModule.human_attribute_name('grade') %>:</strong> | ... | ... |
app/views/modules/load_module_tree.js.erb
1 | 1 | $('div#module_tree').html('<%= escape_javascript(render partial: "module_tree") %>'); |
2 | +$('div#hotspot_metric_results').html('<%= escape_javascript(render partial: "hotspot_metric_results") %>') | |
2 | 3 | $('div#metric_results').html('<%= escape_javascript(render partial: "metric_results") %>'); | ... | ... |
app/views/repositories/_hotspot_metric_results_error.html.erb
0 → 100644
... | ... | @@ -0,0 +1 @@ |
1 | +<p><%= t('activemodel.errors.repository.no_hotspot_metric_results') %></p> | ... | ... |
app/views/repositories/load_error.js.erb
1 | 1 | $('div#processing_information').html('<%= escape_javascript(render partial: "processing_information") %>'); |
2 | 2 | $('div#module_tree').html('<%= escape_javascript(render partial: "module_tree_error") %>'); |
3 | -$('div#metric_results').html('<%= escape_javascript(render partial: "metric_results_error") %>'); | |
4 | 3 | \ No newline at end of file |
4 | +$('div#hotspot_metric_results').html('<%= escape_javascript(render partial: "hotspot_metric_results_error") %>'); | |
5 | +$('div#metric_results').html('<%= escape_javascript(render partial: "metric_results_error") %>'); | ... | ... |
app/views/repositories/show.html.erb
... | ... | @@ -64,6 +64,11 @@ |
64 | 64 | <div id="module_tree"><%= image_tag 'loader.gif' %> <%= t('repository.show.loading') %></div> |
65 | 65 | </div> |
66 | 66 | |
67 | + <div id="hotspot-metric-accordion"> | |
68 | + <h3 class="jquery-ui-accordion"><%= t('repository.show.hotspot_metric_results') %></h3> | |
69 | + <div id="hotspot_metric_results"><%= image_tag 'loader.gif' %> <%= t('repository.show.loading') %></div> | |
70 | + </div> | |
71 | + | |
67 | 72 | <div id="metric-accordion"> |
68 | 73 | <h3 class="jquery-ui-accordion"><%= t('repository.show.metric_results') %></h3> |
69 | 74 | <div id="metric_results"><%= image_tag 'loader.gif' %> <%= t('repository.show.loading') %></div> |
... | ... | @@ -81,6 +86,7 @@ |
81 | 86 | collapsible: true, |
82 | 87 | }); |
83 | 88 | $("#module-accordion").accordion({active: false}) |
89 | + $("#hotspot-metric-accordion").accordion({active: false}) | |
84 | 90 | $("#metric-accordion").accordion({active: false}) |
85 | 91 | }); |
86 | 92 | </script> | ... | ... |
config/locales/views/en.yml
... | ... | @@ -47,6 +47,10 @@ en: |
47 | 47 | no_description: "There is no description available" |
48 | 48 | welcome: "Welcome" |
49 | 49 | metrics: "Metrics" |
50 | + tree_metrics: "Tree Metrics" | |
51 | + tree_metric: "Tree Metric" | |
52 | + hotspot_metrics: "Hotspot Metrics" | |
53 | + hotspot_metric: "Hotspot Metric" | |
50 | 54 | value: "Value" |
51 | 55 | threshold: "Threshold" |
52 | 56 | granularity: "Granularity" | ... | ... |
config/locales/views/metric_configurations/en.yml
... | ... | @@ -23,7 +23,8 @@ en: |
23 | 23 | metric_configurations_base_tool_name: "Base Tool Name:" |
24 | 24 | metric_configurations_aggregation: "Aggregation Form" |
25 | 25 | metric_configurations_reading_group: "Reading Group Name" |
26 | - no_metric_configurations: "There are no Metric Configurations yet!" | |
26 | + no_tree_metric_configurations: "There are no Tree Metric Configurations yet!" | |
27 | + no_hotspot_metric_configurations: "There are no Hotspot Metric Configurations yet!" | |
27 | 28 | destroy_metric_configuration: "Destroy Metric Configuration" |
28 | 29 | want_destroy_metric_configuration: "Are you sure that you want to destroy this Metric Configuration?" |
29 | 30 | metric_base_tool_name: "Base Tool Name" | ... | ... |
config/locales/views/metric_configurations/pt.yml
... | ... | @@ -27,7 +27,8 @@ pt: |
27 | 27 | metric_configurations_base_tool_name: "Nome da ferramenta base:" |
28 | 28 | metric_configurations_aggregation: "Forma de Agregação" |
29 | 29 | metric_configurations_reading_group: "Nome do grupo" |
30 | - no_metric_configurations: "Não há configurações de métricas ainda!" | |
30 | + no_tree_metric_configurations: "Não há configurações de métricas escalares ainda!" | |
31 | + no_hotspot_metric_configurations: "Não há configurações de métricas de Hotspot ainda!" | |
31 | 32 | destroy_metric_configuration: "Destruir Configuração de Métrica" |
32 | 33 | want_destroy_metric_configuration: "Tem certeza que você quer destruir esta Configuração de Métrica?" |
33 | 34 | metric_base_tool_name: "Coletor" | ... | ... |
config/locales/views/metric_results/en.yml
config/locales/views/metric_results/pt.yml
config/locales/views/pt.yml
... | ... | @@ -50,6 +50,10 @@ pt: |
50 | 50 | no_description: "Não há descrição disponível." |
51 | 51 | welcome: "Bem-Vindo" |
52 | 52 | metrics: "Métricas" |
53 | + tree_metrics: "Métricas escalares" | |
54 | + tree_metric: "Métrica escalar" | |
55 | + hotspot_metrics: "Métricas de Hotspot" | |
56 | + hotspot_metric: "Métrica de Hotspot" | |
53 | 57 | value: "Valor" |
54 | 58 | threshold: "limite" |
55 | 59 | granularity: "Granularidade" | ... | ... |
config/locales/views/repository/en.yml
... | ... | @@ -25,14 +25,16 @@ en: |
25 | 25 | branch: "The branch to be analyzed." |
26 | 26 | errors: |
27 | 27 | repository: |
28 | - no_metric_results: "Repository process returned with error. There are no metric results." | |
29 | - no_modeule_tree: "Repository process returned with error. There is no module tree." | |
28 | + no_metric_results: "Repository process returned with error. There are no tree metric results." | |
29 | + no_hotspot_metric_results: "Repository process returned with error. There are no hotspot metric results." | |
30 | + no_module_tree: "Repository process returned with error. There is no module tree." | |
30 | 31 | unstarted_processing: "This Repository has no processings yet. Please, wait an instant as we start it." |
31 | 32 | repository: |
32 | 33 | show: |
33 | 34 | reprocess: "Reprocess" |
34 | 35 | processing_information: "Processing Information" |
35 | 36 | modules_tree: "Modules Tree" |
36 | - metric_results: "Metric Results" | |
37 | + hotspot_metric_results: "Hotspot Metric Results" | |
38 | + metric_results: "Tree Metric Results" | |
37 | 39 | loading: "Loading data. Please, wait." |
38 | 40 | date_processing: "Retrieve the closest processing information from" | ... | ... |
config/locales/views/repository/pt.yml
... | ... | @@ -26,13 +26,15 @@ pt: |
26 | 26 | errors: |
27 | 27 | repository: |
28 | 28 | no_metric_results: "O processamento do Repósitório retornou um erro. Não há Resultados de Métrica." |
29 | - no_modeule_tree: "Repository process returned with error. Não há uma Árvore de Módulos." | |
29 | + no_hotspot_metric_results: "O processamento do Repósitório retornou um erro. Não há Resultados de Métricas de Hotspot." | |
30 | + no_module_tree: "Repository process returned with error. Não há uma Árvore de Módulos." | |
30 | 31 | unstarted_processing: "Este Repositório ainda não tem Processamentos. Por favor, aguarde um instante enquanto o iniciamos." |
31 | 32 | repository: |
32 | 33 | show: |
33 | 34 | reprocess: "Reprocessar" |
34 | 35 | processing_information: "Informação do Processamento" |
35 | 36 | modules_tree: "Árvore de Módulos" |
37 | + hotspot_metric_results: "Resultados de Métricas de Hotspot" | |
36 | 38 | metric_results: "Resultados de Métrica" |
37 | 39 | loading: "Carregando os dados. Por favor, aguarde." |
38 | 40 | date_processing: "Obtenha a informação de processamento mais próxima a" | ... | ... |
features/compound_metric_configuration/create.feature
... | ... | @@ -9,7 +9,7 @@ Feature: Compound Metric Configuration Creation |
9 | 9 | And I am signed in |
10 | 10 | And I own a sample configuration |
11 | 11 | And I have a reading group named "Scholar" |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | 13 | And I am at the Sample Configuration page |
14 | 14 | And I click the Add Metric link |
15 | 15 | And I click the Compound Metric link | ... | ... |
features/compound_metric_configuration/edition.feature
... | ... | @@ -9,10 +9,10 @@ Feature: Compound Metric Configuration edition |
9 | 9 | And I am signed in |
10 | 10 | And I have a sample configuration |
11 | 11 | And I have a sample reading group |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | 13 | And I have a sample compound metric configuration within the given mezuro configuration |
14 | 14 | When I am at the Sample Configuration page |
15 | - Then I should not see Edit within table | |
15 | + Then I should not find "Edit" within "table#tree_metric_configurations" | |
16 | 16 | |
17 | 17 | @kalibro_configuration_restart |
18 | 18 | Scenario: editing a compound metric configuration successfully |
... | ... | @@ -20,7 +20,7 @@ Feature: Compound Metric Configuration edition |
20 | 20 | And I am signed in |
21 | 21 | And I own a sample configuration |
22 | 22 | And I have a sample reading group |
23 | - And I have a sample metric configuration within the given mezuro configuration | |
23 | + And I have a sample tree metric configuration within the given mezuro configuration | |
24 | 24 | And I have a sample compound metric configuration within the given mezuro configuration |
25 | 25 | And I am at the Sample Configuration page |
26 | 26 | When I click the edit link of the Coumpound Metric |
... | ... | @@ -30,13 +30,13 @@ Feature: Compound Metric Configuration edition |
30 | 30 | Then I should see "Another_code" |
31 | 31 | And I should see "Compound Metric Configuration was successfully updated." |
32 | 32 | |
33 | - @kalibro_configuration_restart@javascript | |
33 | + @kalibro_configuration_restart @javascript | |
34 | 34 | Scenario: trying to edit with blank fields |
35 | 35 | Given I am a regular user |
36 | 36 | And I am signed in |
37 | 37 | And I own a sample configuration |
38 | 38 | And I have a sample reading group |
39 | - And I have a sample metric configuration within the given mezuro configuration | |
39 | + And I have a sample tree metric configuration within the given mezuro configuration | |
40 | 40 | And I have a sample compound metric configuration within the given mezuro configuration |
41 | 41 | When I visit the sample compound metric configuration edit page |
42 | 42 | And I fill the Name field with " " |
... | ... | @@ -57,7 +57,7 @@ Feature: Compound Metric Configuration edition |
57 | 57 | And I am signed in |
58 | 58 | And I own a sample configuration |
59 | 59 | And I have a sample reading group |
60 | - And I have a sample metric configuration within the given mezuro configuration | |
60 | + And I have a sample tree metric configuration within the given mezuro configuration | |
61 | 61 | And I have a sample compound metric configuration within the given mezuro configuration |
62 | 62 | And I have another compound metric configuration with code "Another_Code" within the given mezuro configuration |
63 | 63 | When I visit the sample compound metric configuration edit page | ... | ... |
... | ... | @@ -0,0 +1,18 @@ |
1 | +Feature: Hotspot Metric Configuration Creation | |
2 | + In order to register my metric configurations | |
3 | + As a regular user | |
4 | + I should be able to create hotspot metric configurations | |
5 | + | |
6 | + @kalibro_configuration_restart @javascript | |
7 | + Scenario: hotspot metric configuration creation | |
8 | + Given I am a regular user | |
9 | + And I am signed in | |
10 | + And I own a sample configuration | |
11 | + And I am at the Sample Configuration page | |
12 | + And I click the Add Metric link | |
13 | + And I click the "MetricFu" h3 | |
14 | + And I click the Duplicate Code link | |
15 | + When I fill the Weight field with "2" | |
16 | + And I press the Save button | |
17 | + Then I should see "Hotspot Metrics" | |
18 | + And I should see "Duplicate Code" | ... | ... |
... | ... | @@ -0,0 +1,23 @@ |
1 | +Feature: Hotspot Configuration listing | |
2 | + In order to interact with hotspot metric configurations | |
3 | + As a regular user | |
4 | + I should see the hotspot metric configurations of a given kalibro configuration | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: When there are hotspot metric configurations and no tree metric configurations | |
8 | + Given I have a sample configuration | |
9 | + And I have a sample hotspot metric configuration within the given mezuro configuration | |
10 | + When I am at the Sample Configuration page | |
11 | + Then I should see the sample hotspot metric configuration content | |
12 | + And I should see "There are no Tree Metric Configurations yet!" | |
13 | + | |
14 | + | |
15 | + @kalibro_configuration_restart | |
16 | + Scenario: When there are hotspot metric configurations and tree metric configurations | |
17 | + Given I have a sample configuration | |
18 | + And I have a sample hotspot metric configuration within the given mezuro configuration | |
19 | + And I have a sample reading group | |
20 | + And I have a sample tree metric configuration within the given mezuro configuration | |
21 | + When I am at the Sample Configuration page | |
22 | + Then I should see the sample hotspot metric configuration content | |
23 | + And I should not see "There are no Tree Metric Configurations yet!" | ... | ... |
features/kalibro_configuration/show.feature
1 | 1 | Feature: Show Configuration |
2 | - In order to know all the contents of a given configuration | |
2 | + In order to know all the contents of a given configuration | |
3 | 3 | As a regular user |
4 | 4 | I should be able to see each of them |
5 | 5 | |
6 | 6 | @kalibro_configuration_restart |
7 | 7 | Scenario: Checking configuration contents |
8 | 8 | Given I have a sample configuration |
9 | + And I have a hotspot metric configuration | |
10 | + And I have a tree metric configuration | |
9 | 11 | When I am at the Sample Configuration page |
10 | 12 | Then the sample configuration should be there |
11 | 13 | \ No newline at end of file | ... | ... |
features/kalibro_range/create.feature
... | ... | @@ -9,7 +9,7 @@ Feature: Create Kalibro Range |
9 | 9 | And I am signed in |
10 | 10 | And I own a sample configuration |
11 | 11 | And I own a sample reading group |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | 13 | And I have a sample reading within the sample reading group labeled "My Reading" |
14 | 14 | And I am at the sample metric configuration page |
15 | 15 | When I click the Add Range link |
... | ... | @@ -25,7 +25,7 @@ Feature: Create Kalibro Range |
25 | 25 | And I am signed in |
26 | 26 | And I own a sample configuration |
27 | 27 | And I have a reading group named "Scholar" |
28 | - And I have a sample metric configuration within the given mezuro configuration | |
28 | + And I have a sample tree metric configuration within the given mezuro configuration | |
29 | 29 | And I am at the sample metric configuration page |
30 | 30 | When I click the Add Range link |
31 | 31 | Then I should be at the New Range page |
... | ... | @@ -41,7 +41,7 @@ Feature: Create Kalibro Range |
41 | 41 | And I am signed in |
42 | 42 | And I own a sample configuration |
43 | 43 | And I own a sample reading group |
44 | - And I have a sample metric configuration within the given mezuro configuration | |
44 | + And I have a sample tree metric configuration within the given mezuro configuration | |
45 | 45 | And I am at the sample metric configuration page |
46 | 46 | When I click the Add Range link |
47 | 47 | Then I should be at the New Range page |
... | ... | @@ -61,7 +61,7 @@ Feature: Create Kalibro Range |
61 | 61 | And I am signed in |
62 | 62 | And I own a sample configuration |
63 | 63 | And I own a sample reading group |
64 | - And I have a sample metric configuration within the given mezuro configuration | |
64 | + And I have a sample tree metric configuration within the given mezuro configuration | |
65 | 65 | And I have a sample reading within the sample reading group labeled "My Reading" |
66 | 66 | And I am at the New Range page |
67 | 67 | And I fill the Beginning field with "42" |
... | ... | @@ -77,7 +77,7 @@ Feature: Create Kalibro Range |
77 | 77 | And I am signed in |
78 | 78 | And I own a sample configuration |
79 | 79 | And I own a sample reading group |
80 | - And I have a sample metric configuration within the given mezuro configuration | |
80 | + And I have a sample tree metric configuration within the given mezuro configuration | |
81 | 81 | And I have a sample reading within the sample reading group labeled "My Reading" |
82 | 82 | And I am at the New Range page |
83 | 83 | And I fill the Beginning field with "666" |
... | ... | @@ -95,7 +95,7 @@ Feature: Create Kalibro Range |
95 | 95 | And I am signed in |
96 | 96 | And I own a sample configuration |
97 | 97 | And I own a sample reading group |
98 | - And I have a sample metric configuration within the given mezuro configuration | |
98 | + And I have a sample tree metric configuration within the given mezuro configuration | |
99 | 99 | And I have a sample reading within the sample reading group labeled "My Reading" |
100 | 100 | And I am at the New Range page |
101 | 101 | And I fill the Beginning field with "z" |
... | ... | @@ -113,7 +113,7 @@ Feature: Create Kalibro Range |
113 | 113 | And I am signed in |
114 | 114 | And I own a sample configuration |
115 | 115 | And I own a sample reading group |
116 | - And I have a sample metric configuration within the given mezuro configuration | |
116 | + And I have a sample tree metric configuration within the given mezuro configuration | |
117 | 117 | And I have a sample reading within the sample reading group labeled "My Reading" |
118 | 118 | And I am at the New Range page |
119 | 119 | And I fill the Beginning field with "-1" |
... | ... | @@ -131,9 +131,9 @@ Feature: Create Kalibro Range |
131 | 131 | And I am signed in |
132 | 132 | And I own a sample configuration |
133 | 133 | And I own a sample reading group |
134 | - And I have a sample metric configuration within the given mezuro configuration | |
134 | + And I have a sample tree metric configuration within the given mezuro configuration | |
135 | 135 | And I have a sample reading within the sample reading group labeled "My Reading" |
136 | - And I have a sample range within the sample metric configuration with beginning "2" | |
136 | + And I have a sample range within the sample tree metric configuration with beginning "2" | |
137 | 137 | And I am at the New Range page |
138 | 138 | And I fill the Beginning field with "2" |
139 | 139 | And I fill the End field with "666" |
... | ... | @@ -151,7 +151,7 @@ Feature: Create Kalibro Range |
151 | 151 | And I am signed in |
152 | 152 | And I own a sample configuration |
153 | 153 | And I own a sample reading group |
154 | - And I have a sample metric configuration within the given mezuro configuration | |
154 | + And I have a sample tree metric configuration within the given mezuro configuration | |
155 | 155 | And I have a sample reading within the sample reading group labeled "My Reading" |
156 | 156 | And I am at the New Range page |
157 | 157 | And I click the -∞ link |
... | ... | @@ -169,7 +169,7 @@ Feature: Create Kalibro Range |
169 | 169 | And I am signed in |
170 | 170 | And I own a sample configuration |
171 | 171 | And I own a sample reading group |
172 | - And I have a sample metric configuration within the given mezuro configuration | |
172 | + And I have a sample tree metric configuration within the given mezuro configuration | |
173 | 173 | And I have a sample reading within the sample reading group labeled "My Reading" |
174 | 174 | And I am at the New Range page |
175 | 175 | And I fill the Beginning field with "2" |
... | ... | @@ -193,7 +193,7 @@ Feature: Create Kalibro Range |
193 | 193 | And I am signed in |
194 | 194 | And I own a sample configuration |
195 | 195 | And I own a sample reading group |
196 | - And I have a sample metric configuration within the given mezuro configuration | |
196 | + And I have a sample tree metric configuration within the given mezuro configuration | |
197 | 197 | And I have a sample compound metric configuration within the given mezuro configuration |
198 | 198 | And I have a sample reading within the sample reading group labeled "My Reading" |
199 | 199 | And I am at the New Range page for the compound metric configuration | ... | ... |
features/kalibro_range/deletion.feature
... | ... | @@ -9,9 +9,9 @@ Feature: Kalibro Range Deletion |
9 | 9 | And I am signed in |
10 | 10 | And I own a sample configuration |
11 | 11 | And I have a sample reading group |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | 13 | And I have a sample reading within the sample reading group labeled "My Reading" |
14 | - And I have a sample range within the sample metric configuration | |
14 | + And I have a sample range within the sample tree metric configuration | |
15 | 15 | And I am at the sample metric configuration page |
16 | 16 | When I click the Destroy link |
17 | 17 | Then I should be at metric configuration sample page |
... | ... | @@ -37,8 +37,8 @@ Feature: Kalibro Range Deletion |
37 | 37 | And I am signed in |
38 | 38 | And I have a sample configuration |
39 | 39 | And I have a sample reading group |
40 | - And I have a sample metric configuration within the given mezuro configuration | |
40 | + And I have a sample tree metric configuration within the given mezuro configuration | |
41 | 41 | And I have a sample reading within the sample reading group labeled "My Reading" |
42 | - And I have a sample range within the sample metric configuration | |
42 | + And I have a sample range within the sample tree metric configuration | |
43 | 43 | When I am at the sample metric configuration page |
44 | 44 | Then I should not see "Destroy" | ... | ... |
features/kalibro_range/edit.feature
... | ... | @@ -9,9 +9,9 @@ Feature: Kalibro Range Edit |
9 | 9 | And I am signed in |
10 | 10 | And I own a sample configuration |
11 | 11 | And I own a sample reading group |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | 13 | And I have a sample reading within the sample reading group labeled "My Reading" |
14 | - And I have a sample range within the sample metric configuration with beginning "1.1" | |
14 | + And I have a sample range within the sample tree metric configuration with beginning "1.1" | |
15 | 15 | And I am at the Edit Kalibro Range page |
16 | 16 | And the select field "Reading" is set as "My Reading" |
17 | 17 | And the field "Beginning" should be filled with "1.1" |
... | ... | @@ -45,9 +45,9 @@ Feature: Kalibro Range Edit |
45 | 45 | And I am signed in |
46 | 46 | And I own a sample configuration |
47 | 47 | And I own a sample reading group |
48 | - And I have a sample metric configuration within the given mezuro configuration | |
48 | + And I have a sample tree metric configuration within the given mezuro configuration | |
49 | 49 | And I have a sample reading within the sample reading group labeled "My Reading" |
50 | - And I have a sample range within the sample metric configuration with beginning "1" | |
50 | + And I have a sample range within the sample tree metric configuration with beginning "1" | |
51 | 51 | And I am at the Edit Kalibro Range page |
52 | 52 | When I fill the Beginning field with " " |
53 | 53 | And I press the Save button | ... | ... |
features/metric_configuration/create.feature
... | ... | @@ -1,91 +0,0 @@ |
1 | -Feature: Metric Configuration Creation | |
2 | - In order to register my metric configurations | |
3 | - As a regular user | |
4 | - I should be able to create metric configurations | |
5 | - | |
6 | - @kalibro_configuration_restart | |
7 | - Scenario: Should not create metric configurations without login | |
8 | - Given I have a sample configuration | |
9 | - And I am at the Sample Configuration page | |
10 | - Then I should not see "New Metric Configuration" | |
11 | - | |
12 | - @kalibro_configuration_restart @javascript | |
13 | - Scenario: metric configuration creation | |
14 | - Given I am a regular user | |
15 | - And I am signed in | |
16 | - And I own a sample configuration | |
17 | - And I have a reading group named "Scholar" | |
18 | - And I am at the Sample Configuration page | |
19 | - And I click the Add Metric link | |
20 | - And I click the "Analizo" h3 | |
21 | - And I click the Total Lines of Code link | |
22 | - And I fill the Weight field with "2" | |
23 | - And I set the select field "Aggregation Form" as "Average" | |
24 | - And I set the select field "Reading Group" as "Scholar" | |
25 | - When I press the Save button | |
26 | - Then I should see "Total Lines of Code" | |
27 | - Then I should see "2" | |
28 | - | |
29 | - @kalibro_configuration_restart @javascript | |
30 | - Scenario: ruby metric configuration creation | |
31 | - Given I am a regular user | |
32 | - And I am signed in | |
33 | - And I own a sample configuration | |
34 | - And I have a reading group named "Scholar" | |
35 | - And I am at the Sample Configuration page | |
36 | - And I click the Add Metric link | |
37 | - And I click the "MetricFu" h3 | |
38 | - And I click the Pain link | |
39 | - And I fill the Weight field with "2" | |
40 | - And I set the select field "Aggregation Form" as "Average" | |
41 | - And I set the select field "Reading Group" as "Scholar" | |
42 | - When I press the Save button | |
43 | - Then I should see "Pain" | |
44 | - Then I should see "2" | |
45 | - | |
46 | - @kalibro_configuration_restart @javascript | |
47 | - Scenario: metric configuration creation | |
48 | - Given I am a regular user | |
49 | - And I am signed in | |
50 | - And I own a sample configuration | |
51 | - And I have a reading group named "Scholar" | |
52 | - And I am at the Sample Configuration page | |
53 | - And I click the Add Metric link | |
54 | - And I click the "Analizo" h3 | |
55 | - And I click the Total Lines of Code link | |
56 | - When I click the Back link | |
57 | - Then I should be at the choose metric page | |
58 | - | |
59 | - @kalibro_configuration_restart @javascript | |
60 | - Scenario: compound metric configuration creation with same code | |
61 | - Given I am a regular user | |
62 | - And I am signed in | |
63 | - And I own a sample configuration | |
64 | - And I have a reading group named "Scholar" | |
65 | - And I have a metric configuration with code "total_abstract_classes" within the given mezuro configuration | |
66 | - And I am at the Sample Configuration page | |
67 | - And I click the Add Metric link | |
68 | - And I click the "Analizo" h3 | |
69 | - And I click the Total Abstract Classes link | |
70 | - And I fill the Weight field with "2" | |
71 | - And I set the select field "Aggregation Form" as "Average" | |
72 | - And I set the select field "Reading Group" as "Scholar" | |
73 | - When I press the Save button | |
74 | - Then I should see "Code must be unique within a kalibro configuration" | |
75 | - | |
76 | - @kalibro_configuration_restart @javascript | |
77 | - Scenario: metric configuration creation with count aggregation form | |
78 | - Given I am a regular user | |
79 | - And I am signed in | |
80 | - And I own a sample configuration | |
81 | - And I have a reading group named "Scholar" | |
82 | - And I am at the Sample Configuration page | |
83 | - And I click the Add Metric link | |
84 | - And I click the "Analizo" h3 | |
85 | - And I click the Lines of Code link | |
86 | - And I fill the Weight field with "100" | |
87 | - And I set the select field "Aggregation Form" as "Count" | |
88 | - And I set the select field "Reading Group" as "Scholar" | |
89 | - When I press the Save button | |
90 | - Then I should see "Lines of Code" | |
91 | - Then I should see "100" |
features/metric_configuration/delete.feature
... | ... | @@ -1,25 +0,0 @@ |
1 | -Feature: Metric Configuration Deletion | |
2 | - In order to be able to remove metric configuration | |
3 | - As a regular user | |
4 | - The system should have an interface to it | |
5 | - | |
6 | - @kalibro_configuration_restart | |
7 | - Scenario: Should delete a metric configuration that I own | |
8 | - Given I am a regular user | |
9 | - And I am signed in | |
10 | - And I own a sample configuration | |
11 | - And I have a sample reading group | |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
13 | - When I am at the Sample Configuration page | |
14 | - And I click destroy Metric Configuration | |
15 | - Then I should see "There are no Metric Configurations yet!" | |
16 | - | |
17 | - @kalibro_configuration_restart | |
18 | - Scenario: Should not see the destroy metric configuration link in the mezuro configuration that I not own | |
19 | - Given I am a regular user | |
20 | - And I am signed in | |
21 | - And I have a sample configuration | |
22 | - And I have a sample reading group | |
23 | - And I have a sample metric configuration within the given mezuro configuration | |
24 | - When I am at the Sample Configuration page | |
25 | - Then I should not see "Destroy" |
features/metric_configuration/edition.feature
... | ... | @@ -1,52 +0,0 @@ |
1 | -Feature: Metric Configuration edition | |
2 | - In order to interact with metric configurations | |
3 | - As a regular user | |
4 | - I should edit the informations of metric configurations | |
5 | - | |
6 | - @kalibro_configuration_restart | |
7 | - Scenario: the configuration is not mine | |
8 | - Given I am a regular user | |
9 | - And I am signed in | |
10 | - And I have a sample configuration | |
11 | - And I have a sample reading group | |
12 | - And I have a sample metric configuration within the given mezuro configuration | |
13 | - When I am at the Sample Configuration page | |
14 | - Then I should not see Edit within table | |
15 | - | |
16 | - @kalibro_configuration_restart | |
17 | - Scenario: editing a metric configuration successfully | |
18 | - Given I am a regular user | |
19 | - And I am signed in | |
20 | - And I own a sample configuration | |
21 | - And I have a sample reading group | |
22 | - And I have a sample metric configuration within the given mezuro configuration | |
23 | - And I am at the Sample Configuration page | |
24 | - When I click the Edit link | |
25 | - And I fill the Weight field with "3.0" | |
26 | - And I press the Save button | |
27 | - Then I should see "3.0" | |
28 | - | |
29 | - @kalibro_configuration_restart | |
30 | - Scenario: trying to edit with blank fields | |
31 | - Given I am a regular user | |
32 | - And I am signed in | |
33 | - And I own a sample configuration | |
34 | - And I have a sample reading group | |
35 | - And I have a sample metric configuration within the given mezuro configuration | |
36 | - When I visit the sample metric configuration edit page | |
37 | - And I fill the Weight field with " " | |
38 | - And I press the Save button | |
39 | - Then I should see "Weight must be greater than 0" | |
40 | - | |
41 | - @kalibro_configuration_restart | |
42 | - Scenario: Should not edit a metric configuration with invalid weight | |
43 | - Given I am a regular user | |
44 | - And I am signed in | |
45 | - And I own a sample configuration | |
46 | - And I have a sample reading group | |
47 | - And I have a sample metric configuration within the given mezuro configuration | |
48 | - When I visit the sample metric configuration edit page | |
49 | - And I fill the Weight field with "0" | |
50 | - And I set the select field "Aggregation Form" as "Median" | |
51 | - When I press the Save button | |
52 | - Then I should see "Weight must be greater than 0" |
features/metric_configuration/listing.feature
... | ... | @@ -1,37 +0,0 @@ |
1 | -Feature: Configuration listing | |
2 | - In order to interact with metric configurations | |
3 | - As a regular user | |
4 | - I should see the metric configurations of a given configuration | |
5 | - | |
6 | - @kalibro_configuration_restart | |
7 | - Scenario: When there are no metric configurations | |
8 | - Given I have a sample configuration | |
9 | - When I am at the Sample Configuration page | |
10 | - Then I should see "Metric" | |
11 | - And I should see "Code" | |
12 | - And I should see "Weight" | |
13 | - And I should see "There are no Metric Configurations yet!" | |
14 | - | |
15 | - @kalibro_configuration_restart | |
16 | - Scenario: When there are metric configurations | |
17 | - Given I have a sample configuration | |
18 | - And I have a sample reading group | |
19 | - And I have a sample metric configuration within the given mezuro configuration | |
20 | - When I am at the Sample Configuration page | |
21 | - Then I should see the sample metric configuration content | |
22 | - | |
23 | - @kalibro_configuration_restart | |
24 | - Scenario: I should see the add metric link when I am the owner of the given configuration | |
25 | - Given I am a regular user | |
26 | - And I am signed in | |
27 | - And I own a sample configuration | |
28 | - When I am at the Sample Configuration page | |
29 | - Then I should see "Add Metric" | |
30 | - | |
31 | - @kalibro_configuration_restart | |
32 | - Scenario: I should not see the add metric link when I am at a given configuration page | |
33 | - Given I am a regular user | |
34 | - And I am signed in | |
35 | - And I have a sample configuration | |
36 | - When I am at the Sample Configuration page | |
37 | - Then I should not see "Add Metric" |
features/metric_configuration/show.feature
... | ... | @@ -1,28 +0,0 @@ |
1 | -Feature: Show Metric Configuration | |
2 | - In order to know all the metric configurations of the given configuration and its contents | |
3 | - As a regular user | |
4 | - I should be able to see each of them | |
5 | - | |
6 | - @kalibro_configuration_restart | |
7 | - Scenario: Checking metric configuration show link | |
8 | - Given I have a sample configuration | |
9 | - And I have a sample reading group | |
10 | - And I have a sample reading within the sample reading group labeled "My Reading" | |
11 | - And I have a sample metric configuration within the given mezuro configuration | |
12 | - And I have a sample range within the sample metric configuration | |
13 | - When I am at the Sample Configuration page | |
14 | - And I click the Show link | |
15 | - Then I should be at metric configuration sample page | |
16 | - And I should see the sample range | |
17 | - | |
18 | - @kalibro_configuration_restart @javascript | |
19 | - Scenario: When there's a range created and I want to see its comments | |
20 | - Given I have a sample configuration | |
21 | - And I have a sample reading group | |
22 | - And I have a sample reading within the sample reading group labeled "My Reading" | |
23 | - And I have a sample metric configuration within the given mezuro configuration | |
24 | - And I have a sample range within the sample metric configuration | |
25 | - And I am at the sample metric configuration page | |
26 | - When I click the "comment-icon" icon | |
27 | - Then I should see "Comment" | |
28 | - |
... | ... | @@ -0,0 +1,43 @@ |
1 | +Feature: Repository hotspot metric results | |
2 | + In order to better understand the results of the analysis | |
3 | + As a regular user | |
4 | + I should see the hotspot metric results list | |
5 | + | |
6 | + @kalibro_configuration_restart @kalibro_processor_restart @javascript | |
7 | + Scenario: Should show the message when the graphic of the given metric has only a single point | |
8 | + Given I am a regular user | |
9 | + And I am signed in | |
10 | + And I own a sample configuration | |
11 | + And I am at the Sample Configuration page | |
12 | + And I click the Add Metric link | |
13 | + And I click the "MetricFu" h3 | |
14 | + And I click the Duplicate Code link | |
15 | + When I fill the Weight field with "2" | |
16 | + And I press the Save button | |
17 | + Given I have a sample project | |
18 | + And I have a sample ruby repository within the sample project | |
19 | + And I start to process that repository | |
20 | + And I wait up for a ready processing | |
21 | + And I ask for the last ready processing of the given repository | |
22 | + And I ask for the module result of the given processing | |
23 | + And I ask for the hotspot metric results of the given module result | |
24 | + When I visit the repository show page | |
25 | + And I click the "Hotspot Metric Results" h3 | |
26 | + Then I should have at least one hotspot metric result | |
27 | + And I should see the hotspot metric results file names | |
28 | + And I should see the hotspot metric results messages | |
29 | + When I click the "Tree Metric Results" h3 | |
30 | + Then I should not see "Duplicate Code" | |
31 | + | |
32 | + @kalibro_configuration_restart @kalibro_processor_restart @javascript | |
33 | + Scenario: Should show the error message when the process fails | |
34 | + Given I am a regular user | |
35 | + And I am signed in | |
36 | + And I have a sample project | |
37 | + And I have a sample configuration with native metrics | |
38 | + And I have a sample of an invalid repository within the sample project | |
39 | + And I start to process that repository | |
40 | + And I wait up for a error processing | |
41 | + When I visit the repository show page | |
42 | + And I click the "Hotspot Metric Results" h3 | |
43 | + Then I should see "Repository process returned with error. There are no hotspot metric results." | ... | ... |
features/repository/show/independent.feature
... | ... | @@ -22,7 +22,7 @@ Feature: Date Select |
22 | 22 | And I should see "AGGREGATING time" |
23 | 23 | And I should see "CALCULATING time" |
24 | 24 | And I should see "INTERPRETING time" |
25 | - When I click the "Metric Results" h3 | |
25 | + When I click the "Tree Metric Results" h3 | |
26 | 26 | And I click the "Modules Tree" h3 |
27 | 27 | Then I should see "Metric" |
28 | 28 | And I should see "Value" |
... | ... | @@ -35,4 +35,4 @@ Feature: Date Select |
35 | 35 | Then I should see "PREPARING" |
36 | 36 | When I click the Back link |
37 | 37 | And I wait for "5" seconds |
38 | - Then I should be at the Repositories index | |
39 | 38 | \ No newline at end of file |
39 | + Then I should be at the Repositories index | ... | ... |
features/repository/show/metric_results.feature
... | ... | @@ -3,7 +3,7 @@ Feature: Repository metric results |
3 | 3 | As a regular user |
4 | 4 | I should see the metric results table with its graphics |
5 | 5 | |
6 | - @kalibro_configuration_restart @kalibro_processor_restart @javascript @wip | |
6 | + @kalibro_configuration_restart @kalibro_processor_restart @javascript | |
7 | 7 | Scenario: Should show the message when the graphic of the given metric has only a single point |
8 | 8 | Given I am a regular user |
9 | 9 | And I am signed in |
... | ... | @@ -16,12 +16,10 @@ Feature: Repository metric results |
16 | 16 | And I ask for the module result of the given processing |
17 | 17 | And I ask for the metric results of the given module result |
18 | 18 | When I visit the repository show page |
19 | - And I click the "Metric Results" h3 | |
19 | + And I click the "Tree Metric Results" h3 | |
20 | 20 | And I see a sample metric's name |
21 | 21 | And I click on the sample metric's name |
22 | 22 | Then I should see "Loading data. Please, wait." |
23 | - When I wait up for the ajax request | |
24 | - Then I should see "There is only one point and it will not be printed into a chart." | |
25 | 23 | |
26 | 24 | @kalibro_configuration_restart @kalibro_processor_restart @javascript |
27 | 25 | Scenario: Should show no range message after a process without range |
... | ... | @@ -36,7 +34,7 @@ Feature: Repository metric results |
36 | 34 | And I ask for the module result of the given processing |
37 | 35 | And I ask for the metric results of the given module result |
38 | 36 | When I visit the repository show page |
39 | - And I click the "Metric Results" h3 | |
37 | + And I click the "Tree Metric Results" h3 | |
40 | 38 | And I see a sample metric's name |
41 | 39 | Then I should see "Missing range" |
42 | 40 | |
... | ... | @@ -50,8 +48,8 @@ Feature: Repository metric results |
50 | 48 | And I start to process that repository |
51 | 49 | And I wait up for a error processing |
52 | 50 | When I visit the repository show page |
53 | - And I click the "Metric Results" h3 | |
54 | - Then I should see "Repository process returned with error. There are no metric results." | |
51 | + And I click the "Tree Metric Results" h3 | |
52 | + Then I should see "Repository process returned with error. There are no tree metric results." | |
55 | 53 | |
56 | 54 | # TODO: Scenario: Should show the graphic of a given metric |
57 | 55 | # It was getting really difficult to test this because of Poltergeist's timeouts | ... | ... |
features/repository/show/modules_tree.feature
... | ... | @@ -36,14 +36,12 @@ Feature: Repository modules tree |
36 | 36 | And I should see "Granularity" |
37 | 37 | And I should see "Grade" |
38 | 38 | |
39 | - # This test is broken under analizo 1.17.0: https://www.pivotaltracker.com/story/show/80377258 | |
40 | - @wip @kalibro_configuration_restart @kalibro_processor_restart @javascript | |
39 | + @kalibro_configuration_restart @kalibro_processor_restart @javascript | |
41 | 40 | Scenario: Module navigation |
42 | 41 | Given I am a regular user |
43 | 42 | And I am signed in |
44 | - And I have a sample project | |
45 | - And I have a sample configuration with native metrics | |
46 | - And I have a sample repository within the sample project | |
43 | + And I have a sample configuration with ruby native metrics | |
44 | + And I have a sample repository | |
47 | 45 | And I start to process that repository |
48 | 46 | And I wait up for a ready processing |
49 | 47 | And I ask for the last ready processing of the given repository |
... | ... | @@ -66,4 +64,5 @@ Feature: Repository modules tree |
66 | 64 | And I ask for the module result of the given processing |
67 | 65 | When I visit the repository show page |
68 | 66 | And I click the "Modules Tree" h3 |
67 | + And I take a picture of the page | |
69 | 68 | Then I should see the given module result | ... | ... |
features/repository/show/repository_info.feature
... | ... | @@ -40,7 +40,7 @@ Feature: Show Repository |
40 | 40 | And I should see "AGGREGATING time" |
41 | 41 | And I should see "CALCULATING time" |
42 | 42 | And I should see "INTERPRETING time" |
43 | - When I click the "Metric Results" h3 | |
43 | + When I click the "Tree Metric Results" h3 | |
44 | 44 | And I click the "Modules Tree" h3 |
45 | 45 | Then I should see "Metric" |
46 | 46 | And I should see "Value" |
... | ... | @@ -67,7 +67,7 @@ Feature: Show Repository |
67 | 67 | And I should see "Configuration" |
68 | 68 | And I should see "State" |
69 | 69 | And I should see "Creation Date" |
70 | - When I click the "Metric Results" h3 | |
70 | + When I click the "Tree Metric Results" h3 | |
71 | 71 | Then I should see "Loading data. Please, wait." |
72 | 72 | When I click the "Modules Tree" h3 |
73 | 73 | Then I should see "Loading data. Please, wait." | ... | ... |
features/step_definitions/kalibro_configuration_steps.rb
... | ... | @@ -13,7 +13,14 @@ end |
13 | 13 | Given(/^I have a sample configuration$/) do |
14 | 14 | @kalibro_configuration = FactoryGirl.create(:kalibro_configuration) |
15 | 15 | FactoryGirl.create(:kalibro_configuration_attributes, user_id: FactoryGirl.create(:another_user).id, kalibro_configuration_id: @kalibro_configuration.id) |
16 | +end | |
16 | 17 | |
18 | +Given(/^I have a sample configuration with hotspot metrics$/) do | |
19 | + @kalibro_configuration = FactoryGirl.create(:kalibro_configuration, name: 'Sample Ruby Configuration') | |
20 | + FactoryGirl.create(:kalibro_configuration_attributes, {id: nil, user_id: @user.id, kalibro_configuration_id: @kalibro_configuration.id}) | |
21 | + | |
22 | + metric_configuration = FactoryGirl.create(:hotspot_metric_configuration, | |
23 | + { kalibro_configuration_id: @kalibro_configuration.id} ) | |
17 | 24 | end |
18 | 25 | |
19 | 26 | Given(/^I own a sample configuration$/) do |
... | ... | @@ -94,4 +101,3 @@ Then(/^the private configuration should not be there$/) do |
94 | 101 | expect(page).to have_no_content(@private_kc.name) |
95 | 102 | expect(page).to have_no_content(@private_kc.description) |
96 | 103 | end |
97 | - | ... | ... |
features/step_definitions/kalibro_range_steps.rb
1 | -Given(/^I have a sample range within the sample metric configuration with beginning "(.*?)"$/) do |beginning| | |
1 | +Given(/^I have a sample range within the sample tree metric configuration with beginning "(.*?)"$/) do |beginning| | |
2 | 2 | @kalibro_range = FactoryGirl.create(:kalibro_range, {beginning: beginning, metric_configuration_id: @metric_configuration.id, |
3 | 3 | reading_id: @reading.id}) |
4 | 4 | end |
... | ... | @@ -20,7 +20,7 @@ Given(/^the select field "(.*?)" is set as "(.*?)"$/) do |field, text| |
20 | 20 | select text, from: field |
21 | 21 | end |
22 | 22 | |
23 | -Given(/^I have a sample range within the sample metric configuration$/) do | |
23 | +Given(/^I have a sample range within the sample tree metric configuration$/) do | |
24 | 24 | @kalibro_range = FactoryGirl.create(:kalibro_range, {metric_configuration_id: @metric_configuration.id, |
25 | 25 | reading_id: @reading.id}) |
26 | 26 | end | ... | ... |
features/step_definitions/metric_configuration_steps.rb
1 | -Given(/^I have a sample metric configuration within the given mezuro configuration$/) do | |
1 | +Given(/^I have a sample tree metric configuration within the given mezuro configuration$/) do | |
2 | 2 | @metric_configuration = FactoryGirl.create(:metric_configuration_with_id, |
3 | 3 | {kalibro_configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id} ) |
4 | 4 | end |
5 | 5 | |
6 | +Given(/^I have a sample hotspot metric configuration within the given mezuro configuration$/) do | |
7 | + @metric_configuration = FactoryGirl.create(:hotspot_metric_configuration, | |
8 | + kalibro_configuration_id: @kalibro_configuration.id) | |
9 | +end | |
10 | + | |
11 | + | |
6 | 12 | Given(/^I have a metric configuration with code "(.*?)" within the given mezuro configuration$/) do |code| |
7 | 13 | @metric_configuration = FactoryGirl.create(:metric_configuration_with_id, |
8 | 14 | {kalibro_configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id, metric: FactoryGirl.build(:metric, code: code)}) |
... | ... | @@ -23,6 +29,16 @@ Given(/^I have a sample configuration with MetricFu metrics$/) do |
23 | 29 | kalibro_configuration_id: @kalibro_configuration.id}) |
24 | 30 | end |
25 | 31 | |
32 | +Given(/^I have a tree metric configuration$/) do | |
33 | + @tree_metric_configuration = FactoryGirl.create(:metric_configuration_with_id, | |
34 | + {kalibro_configuration_id: @kalibro_configuration.id, metric: FactoryGirl.build(:hotspot_metric)}) | |
35 | +end | |
36 | + | |
37 | +Given(/^I have a hotspot metric configuration$/) do | |
38 | + @hotspot_metric_configuration = FactoryGirl.create(:metric_configuration_with_id, | |
39 | + {kalibro_configuration_id: @kalibro_configuration.id, metric: FactoryGirl.build(:pain)}) | |
40 | +end | |
41 | + | |
26 | 42 | When(/^I visit the sample metric configuration edit page$/) do |
27 | 43 | visit edit_kalibro_configuration_metric_configuration_path(kalibro_configuration_id: @metric_configuration.kalibro_configuration_id, id: @metric_configuration.id) |
28 | 44 | end |
... | ... | @@ -41,12 +57,17 @@ Then(/^I am at the sample metric configuration page$/) do |
41 | 57 | expect(page).to have_content("Ranges") |
42 | 58 | end |
43 | 59 | |
44 | -Then(/^I should see the sample metric configuration content$/) do | |
60 | +Then(/^I should see the sample tree metric configuration content$/) do | |
45 | 61 | expect(page).to have_content(@metric_configuration.metric.name) |
46 | 62 | expect(page).to have_content(@metric_configuration.metric.code) |
47 | 63 | expect(page).to have_content(@metric_configuration.weight) |
48 | 64 | end |
49 | 65 | |
66 | +Then(/^I should see the sample hotspot metric configuration content$/) do | |
67 | + expect(page).to have_content(@metric_configuration.metric.name) | |
68 | + expect(page).to have_content(@metric_configuration.metric.code) | |
69 | +end | |
70 | + | |
50 | 71 | Then(/^I should be at metric configuration sample page$/) do |
51 | 72 | expect(page).to have_content(@metric_configuration.metric.name) |
52 | 73 | expect(page).to have_content("Ranges") |
... | ... | @@ -56,6 +77,16 @@ Then(/^I should be at the choose metric page$/) do |
56 | 77 | expect(page).to have_content("Choose a metric from a Base Tool:") |
57 | 78 | end |
58 | 79 | |
80 | +Then(/^the tree configuration should be there$/) do | |
81 | + expect(page).to have_content(@tree_metric_configuration.metric.name) | |
82 | + expect(page).to have_content(@tree_metric_configuration.metric.code) | |
83 | +end | |
84 | + | |
85 | +Then(/^the hotspot configuration should be there$/) do | |
86 | + expect(page).to have_content(@hotspot_metric_configuration.metric.name) | |
87 | + expect(page).to have_content(@hotspot_metric_configuration.metric.code) | |
88 | +end | |
89 | + | |
59 | 90 | When(/^I click destroy Metric Configuration$/) do |
60 | - find('#metrics').first(:link, "Destroy").click | |
91 | + find('#tree_metrics').first(:link, "Destroy").click | |
61 | 92 | end | ... | ... |
features/step_definitions/project_steps.rb
... | ... | @@ -50,6 +50,10 @@ Then(/^I should not see (.+) within (.+)$/) do |text, selector| |
50 | 50 | expect(page.find(selector)).to_not have_content(text) |
51 | 51 | end |
52 | 52 | |
53 | +Then(/^I should not find "(.+)" within "(.+)"$/) do |text, selector| | |
54 | + step "I should not see #{text} within #{selector}" | |
55 | +end | |
56 | + | |
53 | 57 | Then(/^the sample project should be there$/) do |
54 | 58 | expect(page).to have_content(@project.name) |
55 | 59 | expect(page).to have_content(@project.description) | ... | ... |
features/step_definitions/repository_steps.rb
... | ... | @@ -96,7 +96,11 @@ Given(/^I ask for the module result of the given processing$/) do |
96 | 96 | end |
97 | 97 | |
98 | 98 | Given(/^I ask for the metric results of the given module result$/) do |
99 | - @metric_results = @module_result.metric_results | |
99 | + @metric_results = @module_result.tree_metric_results | |
100 | +end | |
101 | + | |
102 | +Given(/^I ask for the hotspot metric results of the given module result$/) do | |
103 | + @metric_results = @module_result.hotspot_metric_results | |
100 | 104 | end |
101 | 105 | |
102 | 106 | Given(/^I see a sample metric's name$/) do |
... | ... | @@ -220,4 +224,18 @@ Then(/^I should be at the Repositories index$/) do |
220 | 224 | expect(page.current_path).to end_with(repositories_path) # We use end_with in order to avoid the language route |
221 | 225 | end |
222 | 226 | |
227 | +Then(/^I should have at least one hotspot metric result$/) do | |
228 | + expect(@metric_results.count).to be > 0 | |
229 | +end | |
230 | + | |
231 | +Then(/^I should see the hotspot metric results messages$/) do | |
232 | + @metric_results.each do |metric_result| | |
233 | + expect(page).to have_content(metric_result.message) | |
234 | + end | |
235 | +end | |
223 | 236 | |
237 | +Then(/^I should see the hotspot metric results file names$/) do | |
238 | + @metric_results.each do |metric_result| | |
239 | + expect(page).to have_content(metric_result.module_result.kalibro_module.short_name) | |
240 | + end | |
241 | +end | ... | ... |
features/support/hooks.rb
... | ... | @@ -0,0 +1,91 @@ |
1 | +Feature: Tree Metric Configuration Creation | |
2 | + In order to register my metric configurations | |
3 | + As a regular user | |
4 | + I should be able to create metric configurations | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: Should not create metric configurations without login | |
8 | + Given I have a sample configuration | |
9 | + And I am at the Sample Configuration page | |
10 | + Then I should not see "New Metric Configuration" | |
11 | + | |
12 | + @kalibro_configuration_restart @javascript | |
13 | + Scenario: metric configuration creation | |
14 | + Given I am a regular user | |
15 | + And I am signed in | |
16 | + And I own a sample configuration | |
17 | + And I have a reading group named "Scholar" | |
18 | + And I am at the Sample Configuration page | |
19 | + And I click the Add Metric link | |
20 | + And I click the "Analizo" h3 | |
21 | + And I click the Total Lines of Code link | |
22 | + And I fill the Weight field with "2" | |
23 | + And I set the select field "Aggregation Form" as "Average" | |
24 | + And I set the select field "Reading Group" as "Scholar" | |
25 | + When I press the Save button | |
26 | + Then I should see "Total Lines of Code" | |
27 | + Then I should see "2" | |
28 | + | |
29 | + @kalibro_configuration_restart @javascript | |
30 | + Scenario: ruby metric configuration creation | |
31 | + Given I am a regular user | |
32 | + And I am signed in | |
33 | + And I own a sample configuration | |
34 | + And I have a reading group named "Scholar" | |
35 | + And I am at the Sample Configuration page | |
36 | + And I click the Add Metric link | |
37 | + And I click the "MetricFu" h3 | |
38 | + And I click the Pain link | |
39 | + And I fill the Weight field with "2" | |
40 | + And I set the select field "Aggregation Form" as "Average" | |
41 | + And I set the select field "Reading Group" as "Scholar" | |
42 | + When I press the Save button | |
43 | + Then I should see "Pain" | |
44 | + Then I should see "2" | |
45 | + | |
46 | + @kalibro_configuration_restart @javascript | |
47 | + Scenario: metric configuration creation | |
48 | + Given I am a regular user | |
49 | + And I am signed in | |
50 | + And I own a sample configuration | |
51 | + And I have a reading group named "Scholar" | |
52 | + And I am at the Sample Configuration page | |
53 | + And I click the Add Metric link | |
54 | + And I click the "Analizo" h3 | |
55 | + And I click the Total Lines of Code link | |
56 | + When I click the Back link | |
57 | + Then I should be at the choose metric page | |
58 | + | |
59 | + @kalibro_configuration_restart @javascript | |
60 | + Scenario: compound metric configuration creation with same code | |
61 | + Given I am a regular user | |
62 | + And I am signed in | |
63 | + And I own a sample configuration | |
64 | + And I have a reading group named "Scholar" | |
65 | + And I have a metric configuration with code "total_abstract_classes" within the given mezuro configuration | |
66 | + And I am at the Sample Configuration page | |
67 | + And I click the Add Metric link | |
68 | + And I click the "Analizo" h3 | |
69 | + And I click the Total Abstract Classes link | |
70 | + And I fill the Weight field with "2" | |
71 | + And I set the select field "Aggregation Form" as "Average" | |
72 | + And I set the select field "Reading Group" as "Scholar" | |
73 | + When I press the Save button | |
74 | + Then I should see "Code must be unique within a kalibro configuration" | |
75 | + | |
76 | + @kalibro_configuration_restart @javascript | |
77 | + Scenario: metric configuration creation with count aggregation form | |
78 | + Given I am a regular user | |
79 | + And I am signed in | |
80 | + And I own a sample configuration | |
81 | + And I have a reading group named "Scholar" | |
82 | + And I am at the Sample Configuration page | |
83 | + And I click the Add Metric link | |
84 | + And I click the "Analizo" h3 | |
85 | + And I click the Lines of Code link | |
86 | + And I fill the Weight field with "100" | |
87 | + And I set the select field "Aggregation Form" as "Count" | |
88 | + And I set the select field "Reading Group" as "Scholar" | |
89 | + When I press the Save button | |
90 | + Then I should see "Lines of Code" | |
91 | + Then I should see "100" | ... | ... |
... | ... | @@ -0,0 +1,25 @@ |
1 | +Feature: Metric Configuration Deletion | |
2 | + In order to be able to remove metric configuration | |
3 | + As a regular user | |
4 | + The system should have an interface to it | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: Should delete a metric configuration that I own | |
8 | + Given I am a regular user | |
9 | + And I am signed in | |
10 | + And I own a sample configuration | |
11 | + And I have a sample reading group | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | + When I am at the Sample Configuration page | |
14 | + And I click destroy Metric Configuration | |
15 | + Then I should see "There are no Tree Metric Configurations yet!" | |
16 | + | |
17 | + @kalibro_configuration_restart | |
18 | + Scenario: Should not see the destroy metric configuration link in the mezuro configuration that I not own | |
19 | + Given I am a regular user | |
20 | + And I am signed in | |
21 | + And I have a sample configuration | |
22 | + And I have a sample reading group | |
23 | + And I have a sample tree metric configuration within the given mezuro configuration | |
24 | + When I am at the Sample Configuration page | |
25 | + Then I should not see "Destroy" | ... | ... |
... | ... | @@ -0,0 +1,52 @@ |
1 | +Feature: Metric Configuration edition | |
2 | + In order to interact with metric configurations | |
3 | + As a regular user | |
4 | + I should edit the informations of metric configurations | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: the configuration is not mine | |
8 | + Given I am a regular user | |
9 | + And I am signed in | |
10 | + And I have a sample configuration | |
11 | + And I have a sample reading group | |
12 | + And I have a sample tree metric configuration within the given mezuro configuration | |
13 | + When I am at the Sample Configuration page | |
14 | + Then I should not see Edit within table#tree_metric_configurations | |
15 | + | |
16 | + @kalibro_configuration_restart | |
17 | + Scenario: editing a metric configuration successfully | |
18 | + Given I am a regular user | |
19 | + And I am signed in | |
20 | + And I own a sample configuration | |
21 | + And I have a sample reading group | |
22 | + And I have a sample tree metric configuration within the given mezuro configuration | |
23 | + And I am at the Sample Configuration page | |
24 | + When I click the Edit link | |
25 | + And I fill the Weight field with "3.0" | |
26 | + And I press the Save button | |
27 | + Then I should see "3.0" | |
28 | + | |
29 | + @kalibro_configuration_restart | |
30 | + Scenario: trying to edit with blank fields | |
31 | + Given I am a regular user | |
32 | + And I am signed in | |
33 | + And I own a sample configuration | |
34 | + And I have a sample reading group | |
35 | + And I have a sample tree metric configuration within the given mezuro configuration | |
36 | + When I visit the sample metric configuration edit page | |
37 | + And I fill the Weight field with " " | |
38 | + And I press the Save button | |
39 | + Then I should see "Weight must be greater than 0" | |
40 | + | |
41 | + @kalibro_configuration_restart | |
42 | + Scenario: Should not edit a metric configuration with invalid weight | |
43 | + Given I am a regular user | |
44 | + And I am signed in | |
45 | + And I own a sample configuration | |
46 | + And I have a sample reading group | |
47 | + And I have a sample tree metric configuration within the given mezuro configuration | |
48 | + When I visit the sample metric configuration edit page | |
49 | + And I fill the Weight field with "0" | |
50 | + And I set the select field "Aggregation Form" as "Median" | |
51 | + When I press the Save button | |
52 | + Then I should see "Weight must be greater than 0" | ... | ... |
... | ... | @@ -0,0 +1,38 @@ |
1 | +Feature: Metric Configuration listing | |
2 | + In order to interact with metric configurations | |
3 | + As a regular user | |
4 | + I should see the metric configurations of a given configuration | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: When there are no tree metric configurations | |
8 | + Given I have a sample configuration | |
9 | + When I am at the Sample Configuration page | |
10 | + Then I should see "Metric" | |
11 | + And I should see "Code" | |
12 | + And I should see "Weight" | |
13 | + And I should see "There are no Tree Metric Configurations yet!" | |
14 | + | |
15 | + @kalibro_configuration_restart | |
16 | + Scenario: When there are tree metric configurations and no hotspot metric configurations | |
17 | + Given I have a sample configuration | |
18 | + And I have a sample reading group | |
19 | + And I have a sample tree metric configuration within the given mezuro configuration | |
20 | + When I am at the Sample Configuration page | |
21 | + Then I should see the sample tree metric configuration content | |
22 | + And I should see "There are no Hotspot Metric Configurations yet!" | |
23 | + | |
24 | + @kalibro_configuration_restart | |
25 | + Scenario: I should see the add metric link when I am the owner of the given configuration | |
26 | + Given I am a regular user | |
27 | + And I am signed in | |
28 | + And I own a sample configuration | |
29 | + When I am at the Sample Configuration page | |
30 | + Then I should see "Add Metric" | |
31 | + | |
32 | + @kalibro_configuration_restart | |
33 | + Scenario: I should not see the add metric link when I am at a given configuration page | |
34 | + Given I am a regular user | |
35 | + And I am signed in | |
36 | + And I have a sample configuration | |
37 | + When I am at the Sample Configuration page | |
38 | + Then I should not see "Add Metric" | ... | ... |
... | ... | @@ -0,0 +1,28 @@ |
1 | +Feature: Show Metric Configuration | |
2 | + In order to know all the metric configurations of the given configuration and its contents | |
3 | + As a regular user | |
4 | + I should be able to see each of them | |
5 | + | |
6 | + @kalibro_configuration_restart | |
7 | + Scenario: Checking metric configuration show link | |
8 | + Given I have a sample configuration | |
9 | + And I have a sample reading group | |
10 | + And I have a sample reading within the sample reading group labeled "My Reading" | |
11 | + And I have a sample tree metric configuration within the given mezuro configuration | |
12 | + And I have a sample range within the sample tree metric configuration | |
13 | + When I am at the Sample Configuration page | |
14 | + And I click the Show link | |
15 | + Then I should be at metric configuration sample page | |
16 | + And I should see the sample range | |
17 | + | |
18 | + @kalibro_configuration_restart @javascript | |
19 | + Scenario: When there's a range created and I want to see its comments | |
20 | + Given I have a sample configuration | |
21 | + And I have a sample reading group | |
22 | + And I have a sample reading within the sample reading group labeled "My Reading" | |
23 | + And I have a sample tree metric configuration within the given mezuro configuration | |
24 | + And I have a sample range within the sample tree metric configuration | |
25 | + And I am at the sample metric configuration page | |
26 | + When I click the "comment-icon" icon | |
27 | + Then I should see "Comment" | |
28 | + | ... | ... |
spec/controllers/compound_metric_configurations_controller_spec.rb
... | ... | @@ -43,6 +43,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do |
43 | 43 | context 'when the current user owns the reading group' do |
44 | 44 | before :each do |
45 | 45 | subject.expects(:kalibro_configuration_owner?).returns true |
46 | + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations") | |
46 | 47 | end |
47 | 48 | |
48 | 49 | context 'with valid fields' do |
... | ... | @@ -134,6 +135,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do |
134 | 135 | context 'when user owns the metric configuration' do |
135 | 136 | before :each do |
136 | 137 | subject.expects(:metric_configuration_owner?).returns true |
138 | + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations") | |
137 | 139 | end |
138 | 140 | |
139 | 141 | context 'with valid fields' do |
... | ... | @@ -170,5 +172,4 @@ describe CompoundMetricConfigurationsController, :type => :controller do |
170 | 172 | end |
171 | 173 | end |
172 | 174 | end |
173 | - | |
174 | 175 | end | ... | ... |
spec/controllers/kalibro_configurations_controller_spec.rb
... | ... | @@ -73,7 +73,8 @@ describe KalibroConfigurationsController, :type => :controller do |
73 | 73 | let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) } |
74 | 74 | |
75 | 75 | before :each do |
76 | - kalibro_configuration.expects(:metric_configurations).returns(metric_configuration) | |
76 | + kalibro_configuration.expects(:tree_metric_configurations).returns([metric_configuration]) | |
77 | + kalibro_configuration.expects(:hotspot_metric_configurations).returns([]) | |
77 | 78 | KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns(kalibro_configuration) |
78 | 79 | |
79 | 80 | get :show, :id => kalibro_configuration.id | ... | ... |
spec/controllers/modules_controller_spec.rb
... | ... | @@ -16,7 +16,7 @@ describe ModulesController, :type => :controller do |
16 | 16 | let (:module_id){ 1 } |
17 | 17 | let (:metric_name ){ FactoryGirl.build(:loc).name } |
18 | 18 | let (:date ){ DateTime.parse("2011-10-20T18:26:43.151+00:00") } |
19 | - let (:metric_result){ FactoryGirl.build(:metric_result) } | |
19 | + let (:tree_metric_result){ FactoryGirl.build(:tree_metric_result) } | |
20 | 20 | let! (:module_result){ FactoryGirl.build(:module_result) } |
21 | 21 | |
22 | 22 | before :each do |
... | ... | @@ -29,4 +29,4 @@ describe ModulesController, :type => :controller do |
29 | 29 | it { is_expected.to respond_with(:success) } |
30 | 30 | it { is_expected.to render_template(:metric_history) } |
31 | 31 | end |
32 | -end | |
33 | 32 | \ No newline at end of file |
33 | +end | ... | ... |
... | ... | @@ -0,0 +1,11 @@ |
1 | +FactoryGirl.define do | |
2 | + factory :date_metric_result, class: KalibroClient::Entities::Miscellaneous::DateMetricResult do | |
3 | + date '2011-10-20T18:26:43.151+00:00' | |
4 | + | |
5 | + # FIXME: A DateMetricResult should be able to create either a TreeMetricResult or a HotspotMetricResult based on | |
6 | + # the arguments passed to it | |
7 | + metric_result_attributes { FactoryGirl.attributes_for(:tree_metric_result).except(:aggregated_value) } | |
8 | + | |
9 | + initialize_with { new('date' => date, 'metric_result' => metric_result_attributes) } | |
10 | + end | |
11 | +end | ... | ... |
spec/factories/kalibro_modules.rb
1 | 1 | FactoryGirl.define do |
2 | 2 | factory :kalibro_module, class: KalibroClient::Entities::Processor::KalibroModule do |
3 | 3 | name 'Qt-Calculator' |
4 | - granlrty 'SOFTWARE' | |
4 | + granularity 'SOFTWARE' | |
5 | 5 | |
6 | 6 | trait :package do |
7 | - granlrty 'PACKAGE' | |
7 | + granularity 'PACKAGE' | |
8 | 8 | end |
9 | 9 | |
10 | 10 | trait :class do |
11 | - granlrty 'CLASS' | |
11 | + granularity 'CLASS' | |
12 | 12 | end |
13 | 13 | |
14 | 14 | trait :function do |
15 | - granlrty 'FUNCTION' | |
15 | + granularity 'FUNCTION' | |
16 | 16 | end |
17 | 17 | |
18 | 18 | trait :method do |
19 | - granlrty 'METHOD' | |
19 | + granularity 'METHOD' | |
20 | 20 | end |
21 | 21 | |
22 | 22 | factory :kalibro_module_package, traits: [:package] | ... | ... |
spec/factories/metric_configurations.rb
... | ... | @@ -2,7 +2,7 @@ FactoryGirl.define do |
2 | 2 | factory :metric_configuration, class: MetricConfiguration do |
3 | 3 | metric {FactoryGirl.build(:metric, code: 'total_abstract_classes')} |
4 | 4 | weight 1 |
5 | - aggregation_form "AVERAGE" | |
5 | + aggregation_form "MEAN" | |
6 | 6 | reading_group_id 1 |
7 | 7 | kalibro_configuration_id 1 |
8 | 8 | |
... | ... | @@ -35,4 +35,8 @@ FactoryGirl.define do |
35 | 35 | kalibro_configuration_id 1 |
36 | 36 | end |
37 | 37 | |
38 | + factory :hotspot_metric_configuration, class: MetricConfiguration do | |
39 | + metric { FactoryGirl.build(:hotspot_metric) } | |
40 | + kalibro_configuration_id 1 | |
41 | + end | |
38 | 42 | end | ... | ... |
spec/factories/metric_results.rb
... | ... | @@ -1,24 +0,0 @@ |
1 | -# This file is part of KalibroEntities | |
2 | -# Copyright (C) 2013 it's respectives authors (please see the AUTHORS file) | |
3 | -# | |
4 | -# This program is free software: you can redistribute it and/or modify | |
5 | -# it under the terms of the GNU General Public License as published by | |
6 | -# the Free Software Foundation, either version 3 of the License, or | |
7 | -# (at your option) any later version. | |
8 | -# | |
9 | -# This program is distributed in the hope that it will be useful, | |
10 | -# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | -# GNU General Public License for more details. | |
13 | - | |
14 | -# You should have received a copy of the GNU General Public License | |
15 | -# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | - | |
17 | -FactoryGirl.define do | |
18 | - factory :metric_result, class: KalibroClient::Entities::Processor::MetricResult do | |
19 | - id "42" | |
20 | - metric_configuration { FactoryGirl.build(:metric_configuration_with_id) } | |
21 | - value "10.0" | |
22 | - aggregated_value "21" | |
23 | - end | |
24 | -end |
spec/factories/metrics.rb
... | ... | @@ -52,4 +52,14 @@ FactoryGirl.define do |
52 | 52 | |
53 | 53 | initialize_with { new(name, code, scope, script) } |
54 | 54 | end |
55 | + | |
56 | + factory :hotspot_metric, class: KalibroClient::Entities::Miscellaneous::HotspotMetric do | |
57 | + name "Flay" | |
58 | + code "flay" | |
59 | + description "" | |
60 | + metric_collector_name "MetricFu" | |
61 | + languages nil | |
62 | + | |
63 | + initialize_with { new(name, code, languages, metric_collector_name) } | |
64 | + end | |
55 | 65 | end | ... | ... |
... | ... | @@ -0,0 +1,24 @@ |
1 | +# This file is part of KalibroEntities | |
2 | +# Copyright (C) 2013 it's respectives authors (please see the AUTHORS file) | |
3 | +# | |
4 | +# This program is free software: you can redistribute it and/or modify | |
5 | +# it under the terms of the GNU General Public License as published by | |
6 | +# the Free Software Foundation, either version 3 of the License, or | |
7 | +# (at your option) any later version. | |
8 | +# | |
9 | +# This program is distributed in the hope that it will be useful, | |
10 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | +# GNU General Public License for more details. | |
13 | + | |
14 | +# You should have received a copy of the GNU General Public License | |
15 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | + | |
17 | +FactoryGirl.define do | |
18 | + factory :tree_metric_result, class: KalibroClient::Entities::Processor::TreeMetricResult do | |
19 | + id "42" | |
20 | + metric_configuration { FactoryGirl.build(:metric_configuration_with_id) } | |
21 | + value "10.0" | |
22 | + aggregated_value "21" | |
23 | + end | |
24 | +end | ... | ... |
spec/helpers/processings_helper_spec.rb
... | ... | @@ -19,10 +19,10 @@ describe ProcessingsHelper, :type => :helper do |
19 | 19 | |
20 | 20 | describe 'find_range_snapshot' do |
21 | 21 | let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id)} |
22 | - let(:metric_result) { FactoryGirl.build(:metric_result, {value: 6.0, metric_configuration: metric_configuration})} | |
22 | + let(:tree_metric_result) { FactoryGirl.build(:tree_metric_result, {value: 6.0, metric_configuration: metric_configuration})} | |
23 | 23 | |
24 | 24 | before :each do |
25 | - metric_result.expects(:metric_configuration).returns(metric_configuration) | |
25 | + tree_metric_result.expects(:metric_configuration).returns(metric_configuration) | |
26 | 26 | metric_configuration.expects(:kalibro_ranges).returns(range_snapshots) |
27 | 27 | end |
28 | 28 | |
... | ... | @@ -30,7 +30,7 @@ describe ProcessingsHelper, :type => :helper do |
30 | 30 | let!(:range_snapshots) { [make_range(1.0, 5.0), make_range(5.1, 10.0), make_range(10.1, 15.0)] } |
31 | 31 | |
32 | 32 | it 'should return the range snapshot which contains the value' do |
33 | - expect(helper.find_range_snapshot(metric_result)).to eq(range_snapshots[1]) | |
33 | + expect(helper.find_range_snapshot(tree_metric_result)).to eq(range_snapshots[1]) | |
34 | 34 | end |
35 | 35 | end |
36 | 36 | |
... | ... | @@ -38,7 +38,7 @@ describe ProcessingsHelper, :type => :helper do |
38 | 38 | let!(:range_snapshots) { [make_range('-INF', 0.0), make_range(0, 'INF')] } |
39 | 39 | |
40 | 40 | it 'should return the range snapshot which contains the value' do |
41 | - expect(helper.find_range_snapshot(metric_result)).to eq(range_snapshots[1]) | |
41 | + expect(helper.find_range_snapshot(tree_metric_result)).to eq(range_snapshots[1]) | |
42 | 42 | end |
43 | 43 | end |
44 | 44 | |
... | ... | @@ -46,7 +46,7 @@ describe ProcessingsHelper, :type => :helper do |
46 | 46 | let!(:range_snapshots) { [make_range('-INF', 'INF')] } |
47 | 47 | |
48 | 48 | it 'should return the range snapshot which contains the value' do |
49 | - expect(helper.find_range_snapshot(metric_result)).to eq(range_snapshots[0]) | |
49 | + expect(helper.find_range_snapshot(tree_metric_result)).to eq(range_snapshots[0]) | |
50 | 50 | end |
51 | 51 | end |
52 | 52 | |
... | ... | @@ -54,7 +54,7 @@ describe ProcessingsHelper, :type => :helper do |
54 | 54 | let!(:range_snapshots) { [make_range('-INF', 6.0), make_range(6.1, 'INF')] } |
55 | 55 | |
56 | 56 | it 'should return nil' do |
57 | - expect(helper.find_range_snapshot(metric_result)).to be_nil | |
57 | + expect(helper.find_range_snapshot(tree_metric_result)).to be_nil | |
58 | 58 | end |
59 | 59 | end |
60 | 60 | ... | ... |
spec/models/kalibro_configuration_spec.rb
... | ... | @@ -87,6 +87,7 @@ describe KalibroConfiguration, :type => :model do |
87 | 87 | it 'is expected to clean the attributes memoization' do |
88 | 88 | # Call attributes once so it memoizes |
89 | 89 | KalibroConfigurationAttributes.expects(:find_by).with(kalibro_configuration_id: kalibro_configuration.id).returns(kalibro_configuration_attributes) |
90 | + KalibroClient::Entities::Configurations::KalibroConfiguration.any_instance.expects(:destroy).returns(kalibro_configuration) | |
90 | 91 | expect(kalibro_configuration.attributes).to eq(kalibro_configuration_attributes) |
91 | 92 | |
92 | 93 | # Destroying | ... | ... |
spec/models/module_result_spec.rb
... | ... | @@ -5,19 +5,19 @@ describe ModuleResult, :type => :model do |
5 | 5 | subject { FactoryGirl.build(:module_result) } |
6 | 6 | |
7 | 7 | describe 'metric_history' do |
8 | - let(:date_module_result) {FactoryGirl.build(:date_module_result)} | |
8 | + let(:date_metric_result) {FactoryGirl.build(:date_metric_result)} | |
9 | 9 | let(:metric_configuration) { FactoryGirl.build(:another_metric_configuration_with_id) } |
10 | - let!(:metric_result) { FactoryGirl.build(:metric_result, metric_configuration: metric_configuration) } | |
10 | + let!(:tree_metric_result) { FactoryGirl.build(:tree_metric_result, metric_configuration: metric_configuration) } | |
11 | 11 | let(:processing) {FactoryGirl.build(:processing)} |
12 | 12 | |
13 | 13 | before :each do |
14 | 14 | subject.expects(:processing).returns(processing) |
15 | - date_module_result.expects(:metric_result).returns(metric_result) | |
16 | - KalibroClient::Entities::Processor::MetricResult.expects(:history_of).with(metric_configuration.metric.name, subject.id, processing.repository_id).returns([date_module_result]) | |
15 | + date_metric_result.expects(:metric_result).returns(tree_metric_result) | |
16 | + KalibroClient::Entities::Processor::TreeMetricResult.expects(:history_of).with(metric_configuration.metric.name, subject.id, processing.repository_id).returns([date_metric_result]) | |
17 | 17 | end |
18 | 18 | |
19 | 19 | it 'should return the history for the given metric name' do |
20 | - expect(subject.metric_history(metric_configuration.metric.name)).to eq({date_module_result.date => metric_result.value}) | |
20 | + expect(subject.metric_history(metric_configuration.metric.name)).to eq({date_metric_result.date => tree_metric_result.value}) | |
21 | 21 | end |
22 | 22 | end |
23 | 23 | end | ... | ... |
spec/models/project_spec.rb
... | ... | @@ -54,6 +54,7 @@ describe Project, :type => :model do |
54 | 54 | it 'is expected to clean the attributes memoization' do |
55 | 55 | # Call attributes once so it memoizes |
56 | 56 | ProjectAttributes.expects(:find_by).with(project_id: project.id).returns(project_attributes) |
57 | + KalibroClient::Entities::Processor::Project.any_instance.expects(:destroy).returns(project) | |
57 | 58 | expect(project.attributes).to eq(project_attributes) |
58 | 59 | |
59 | 60 | # Destroying | ... | ... |
spec/models/reading_group_spec.rb
... | ... | @@ -61,6 +61,7 @@ describe ReadingGroup, :type => :model do |
61 | 61 | it 'is expected to clean the attributes memoization' do |
62 | 62 | # Call attributes once so it memoizes |
63 | 63 | ReadingGroupAttributes.expects(:find_by).with(reading_group_id: reading_group.id).returns(reading_group_attributes) |
64 | + KalibroClient::Entities::Configurations::ReadingGroup.any_instance.expects(:destroy).returns(reading_group) | |
64 | 65 | expect(reading_group.attributes).to eq(reading_group_attributes) |
65 | 66 | |
66 | 67 | # Destroying | ... | ... |