diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index 3fe410a..7569848 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -11,6 +11,7 @@ Prezento is the web interface for Mezuro. * Add latest configurations list to the homepage * Move tutorials to mezuro.github.io * Pluralize navigation menu links +* Make Compound Metric Config. metric list not include Hotspot metrics * Fix 'Tree Metrics' and 'Hotspot Metrics' PT translations in Configuration show view == v0.11.3 - 01/04/2016 diff --git a/app/controllers/compound_metric_configurations_controller.rb b/app/controllers/compound_metric_configurations_controller.rb index 1195d74..94a3f95 100644 --- a/app/controllers/compound_metric_configurations_controller.rb +++ b/app/controllers/compound_metric_configurations_controller.rb @@ -1,4 +1,6 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsController + ALLOWED_METRIC_TYPES = %w(NativeMetricSnapshot CompoundMetricSnapshot) + before_action :set_metric_configurations, only: [:new, :edit] protected @@ -11,8 +13,14 @@ class CompoundMetricConfigurationsController < BaseMetricConfigurationsControlle params.require(:metric_configuration).permit(:reading_group_id, :weight, :metric => [:name, :description, :script, :code, :scope => [:type]]) end + def allowed_metric_configurations(kalibro_configuration_id) + MetricConfiguration.metric_configurations_of(kalibro_configuration_id).select { |metric_configuration| + ALLOWED_METRIC_TYPES.include?(metric_configuration.metric.type) + } + end + def set_metric_configurations - @metric_configurations = MetricConfiguration.metric_configurations_of(@kalibro_configuration.id) + @metric_configurations = allowed_metric_configurations(@kalibro_configuration.id) end def metric_type diff --git a/features/compound_metric_configuration/create.feature b/features/compound_metric_configuration/create.feature index 1672df9..8bb9919 100644 --- a/features/compound_metric_configuration/create.feature +++ b/features/compound_metric_configuration/create.feature @@ -49,3 +49,16 @@ Feature: Compound Metric Configuration Creation When I press the Save button Then I should see "Code must be unique within a kalibro configuration" + @kalibro_configuration_restart @javascript + Scenario: compound metric configuration creation must not include non-tree metrics + Given I am a regular user + And I am signed in + And I own a sample configuration + And I have a reading group named "Scholar" + And I have a tree metric configuration + And I have a hotspot metric configuration + And I have a sample compound metric configuration within the given mezuro configuration + And I am at the Sample Configuration page + And I click the Add Metric link + When I click the Compound Metric link + Then I should see only tree and compound metrics in the Created Metrics list diff --git a/features/step_definitions/compound_metric_configuration_steps.rb b/features/step_definitions/compound_metric_configuration_steps.rb index 3efc2f1..598f6bf 100644 --- a/features/step_definitions/compound_metric_configuration_steps.rb +++ b/features/step_definitions/compound_metric_configuration_steps.rb @@ -40,3 +40,14 @@ Then(/^I should be at compound metric configuration sample page$/) do expect(page).to have_content(@compound_metric_configuration.metric.name) expect(page).to have_content("Ranges") end + +Then(/^I should see only tree and compound metrics in the Created Metrics list$/) do + metrics = MetricConfiguration.metric_configurations_of(@kalibro_configuration.id).map(&:metric) + metrics_by_code = Hash[metrics.map { |metric| [metric.code, metric] }] + + get_table_column_values('#created-metrics-accordion', 'Code') do |code| + metric = metrics_by_code[code] + expect(metric).not_to be_nil + expect(%w(NativeMetricSnapshot CompoundMetricSnapshot)).to include(metric.type) + end +end diff --git a/spec/controllers/compound_metric_configurations_controller_spec.rb b/spec/controllers/compound_metric_configurations_controller_spec.rb index ddff743..e619af1 100644 --- a/spec/controllers/compound_metric_configurations_controller_spec.rb +++ b/spec/controllers/compound_metric_configurations_controller_spec.rb @@ -4,6 +4,23 @@ describe CompoundMetricConfigurationsController, :type => :controller do let(:reading_group) { FactoryGirl.build(:reading_group, :with_id) } let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) } + describe 'allowed_metric_configurations' do + let(:metric_configurations) { [ + FactoryGirl.build(:metric_configuration, reading_group_id: reading_group.id), + FactoryGirl.build(:compound_metric_configuration, reading_group_id: reading_group.id), + FactoryGirl.build(:hotspot_metric_configuration), + ] } + let(:allowed_metric_configurations) { metric_configurations[0..1] } + + before :each do + MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns(metric_configurations) + end + + it 'is expected to filter out hotspot metric configurations' do + expect(subject.send(:allowed_metric_configurations, kalibro_configuration.id)).to eq(allowed_metric_configurations) + end + end + describe 'new' do before :each do sign_in FactoryGirl.create(:user) @@ -11,10 +28,11 @@ describe CompoundMetricConfigurationsController, :type => :controller do context 'when the current user owns the kalibro configuration' do let!(:metric_configuration) { FactoryGirl.build(:metric_configuration, reading_group_id: reading_group.id) } + let(:metric_configurations) { [metric_configuration] } before :each do KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration subject.expects(:kalibro_configuration_owner?).returns true - MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([metric_configuration]) + subject.expects(:allowed_metric_configurations).with(kalibro_configuration.id).returns metric_configurations get :new, kalibro_configuration_id: kalibro_configuration.id end -- libgit2 0.21.2