Commit 1d90c5ee21bec00cdb601e702f22041995d097ab
Committed by
Rafael Reggiani Manzo
1 parent
54eb0fb3
Exists in
colab
and in
2 other branches
Make Compound Metric Config. metric list not include Hotspot metrics
It makes it harder for an user to mistakenly add a metric to their script that will never work. Signed-off-by: Eduardo Araújo <duduktamg@hotmail.com>
Showing
5 changed files
with
53 additions
and
2 deletions
Show diff stats
CHANGELOG.rdoc
@@ -11,6 +11,7 @@ Prezento is the web interface for Mezuro. | @@ -11,6 +11,7 @@ Prezento is the web interface for Mezuro. | ||
11 | * Add latest configurations list to the homepage | 11 | * Add latest configurations list to the homepage |
12 | * Move tutorials to mezuro.github.io | 12 | * Move tutorials to mezuro.github.io |
13 | * Pluralize navigation menu links | 13 | * Pluralize navigation menu links |
14 | +* Make Compound Metric Config. metric list not include Hotspot metrics | ||
14 | * Fix 'Tree Metrics' and 'Hotspot Metrics' PT translations in Configuration show view | 15 | * Fix 'Tree Metrics' and 'Hotspot Metrics' PT translations in Configuration show view |
15 | 16 | ||
16 | == v0.11.3 - 01/04/2016 | 17 | == v0.11.3 - 01/04/2016 |
app/controllers/compound_metric_configurations_controller.rb
1 | class CompoundMetricConfigurationsController < BaseMetricConfigurationsController | 1 | class CompoundMetricConfigurationsController < BaseMetricConfigurationsController |
2 | + ALLOWED_METRIC_TYPES = %w(NativeMetricSnapshot CompoundMetricSnapshot) | ||
3 | + | ||
2 | before_action :set_metric_configurations, only: [:new, :edit] | 4 | before_action :set_metric_configurations, only: [:new, :edit] |
3 | 5 | ||
4 | protected | 6 | protected |
@@ -11,8 +13,14 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsControlle | @@ -11,8 +13,14 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsControlle | ||
11 | params.require(:metric_configuration).permit(:reading_group_id, :weight, :metric => [:name, :description, :script, :code, :scope => [:type]]) | 13 | params.require(:metric_configuration).permit(:reading_group_id, :weight, :metric => [:name, :description, :script, :code, :scope => [:type]]) |
12 | end | 14 | end |
13 | 15 | ||
16 | + def allowed_metric_configurations(kalibro_configuration_id) | ||
17 | + MetricConfiguration.metric_configurations_of(kalibro_configuration_id).select { |metric_configuration| | ||
18 | + ALLOWED_METRIC_TYPES.include?(metric_configuration.metric.type) | ||
19 | + } | ||
20 | + end | ||
21 | + | ||
14 | def set_metric_configurations | 22 | def set_metric_configurations |
15 | - @metric_configurations = MetricConfiguration.metric_configurations_of(@kalibro_configuration.id) | 23 | + @metric_configurations = allowed_metric_configurations(@kalibro_configuration.id) |
16 | end | 24 | end |
17 | 25 | ||
18 | def metric_type | 26 | def metric_type |
features/compound_metric_configuration/create.feature
@@ -49,3 +49,16 @@ Feature: Compound Metric Configuration Creation | @@ -49,3 +49,16 @@ Feature: Compound Metric Configuration Creation | ||
49 | When I press the Save button | 49 | When I press the Save button |
50 | Then I should see "Code must be unique within a kalibro configuration" | 50 | Then I should see "Code must be unique within a kalibro configuration" |
51 | 51 | ||
52 | + @kalibro_configuration_restart @javascript | ||
53 | + Scenario: compound metric configuration creation must not include non-tree metrics | ||
54 | + Given I am a regular user | ||
55 | + And I am signed in | ||
56 | + And I own a sample configuration | ||
57 | + And I have a reading group named "Scholar" | ||
58 | + And I have a tree metric configuration | ||
59 | + And I have a hotspot metric configuration | ||
60 | + And I have a sample compound metric configuration within the given mezuro configuration | ||
61 | + And I am at the Sample Configuration page | ||
62 | + And I click the Add Metric link | ||
63 | + When I click the Compound Metric link | ||
64 | + Then I should see only tree and compound metrics in the Created Metrics list |
features/step_definitions/compound_metric_configuration_steps.rb
@@ -40,3 +40,14 @@ Then(/^I should be at compound metric configuration sample page$/) do | @@ -40,3 +40,14 @@ Then(/^I should be at compound metric configuration sample page$/) do | ||
40 | expect(page).to have_content(@compound_metric_configuration.metric.name) | 40 | expect(page).to have_content(@compound_metric_configuration.metric.name) |
41 | expect(page).to have_content("Ranges") | 41 | expect(page).to have_content("Ranges") |
42 | end | 42 | end |
43 | + | ||
44 | +Then(/^I should see only tree and compound metrics in the Created Metrics list$/) do | ||
45 | + metrics = MetricConfiguration.metric_configurations_of(@kalibro_configuration.id).map(&:metric) | ||
46 | + metrics_by_code = Hash[metrics.map { |metric| [metric.code, metric] }] | ||
47 | + | ||
48 | + get_table_column_values('#created-metrics-accordion', 'Code') do |code| | ||
49 | + metric = metrics_by_code[code] | ||
50 | + expect(metric).not_to be_nil | ||
51 | + expect(%w(NativeMetricSnapshot CompoundMetricSnapshot)).to include(metric.type) | ||
52 | + end | ||
53 | +end |
spec/controllers/compound_metric_configurations_controller_spec.rb
@@ -4,6 +4,23 @@ describe CompoundMetricConfigurationsController, :type => :controller do | @@ -4,6 +4,23 @@ describe CompoundMetricConfigurationsController, :type => :controller do | ||
4 | let(:reading_group) { FactoryGirl.build(:reading_group, :with_id) } | 4 | let(:reading_group) { FactoryGirl.build(:reading_group, :with_id) } |
5 | let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) } | 5 | let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) } |
6 | 6 | ||
7 | + describe 'allowed_metric_configurations' do | ||
8 | + let(:metric_configurations) { [ | ||
9 | + FactoryGirl.build(:metric_configuration, reading_group_id: reading_group.id), | ||
10 | + FactoryGirl.build(:compound_metric_configuration, reading_group_id: reading_group.id), | ||
11 | + FactoryGirl.build(:hotspot_metric_configuration), | ||
12 | + ] } | ||
13 | + let(:allowed_metric_configurations) { metric_configurations[0..1] } | ||
14 | + | ||
15 | + before :each do | ||
16 | + MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns(metric_configurations) | ||
17 | + end | ||
18 | + | ||
19 | + it 'is expected to filter out hotspot metric configurations' do | ||
20 | + expect(subject.send(:allowed_metric_configurations, kalibro_configuration.id)).to eq(allowed_metric_configurations) | ||
21 | + end | ||
22 | + end | ||
23 | + | ||
7 | describe 'new' do | 24 | describe 'new' do |
8 | before :each do | 25 | before :each do |
9 | sign_in FactoryGirl.create(:user) | 26 | sign_in FactoryGirl.create(:user) |
@@ -11,10 +28,11 @@ describe CompoundMetricConfigurationsController, :type => :controller do | @@ -11,10 +28,11 @@ describe CompoundMetricConfigurationsController, :type => :controller do | ||
11 | 28 | ||
12 | context 'when the current user owns the kalibro configuration' do | 29 | context 'when the current user owns the kalibro configuration' do |
13 | let!(:metric_configuration) { FactoryGirl.build(:metric_configuration, reading_group_id: reading_group.id) } | 30 | let!(:metric_configuration) { FactoryGirl.build(:metric_configuration, reading_group_id: reading_group.id) } |
31 | + let(:metric_configurations) { [metric_configuration] } | ||
14 | before :each do | 32 | before :each do |
15 | KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration | 33 | KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration |
16 | subject.expects(:kalibro_configuration_owner?).returns true | 34 | subject.expects(:kalibro_configuration_owner?).returns true |
17 | - MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([metric_configuration]) | 35 | + subject.expects(:allowed_metric_configurations).with(kalibro_configuration.id).returns metric_configurations |
18 | 36 | ||
19 | get :new, kalibro_configuration_id: kalibro_configuration.id | 37 | get :new, kalibro_configuration_id: kalibro_configuration.id |
20 | end | 38 | end |