metric_configuration_test.rb 3.28 KB
require "test_helper"

require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures"

class MetricConfigurationTest < ActiveSupport::TestCase

  def setup
    @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration
    @native_metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash
    @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration
    @metric_configuration_without_ranges = MetricConfigurationFixtures.metric_configuration_without_ranges
    @excellent_range = RangeFixtures.range_excellent
    @bad_range = RangeFixtures.range_bad
  end

  should 'create metric configuration from hash' do
    assert_equal @native_metric_configuration_hash[:code], Kalibro::MetricConfiguration.new(@native_metric_configuration_hash).code
  end

  should 'convert metric configuration to hash' do
    assert_equal @native_metric_configuration_hash, @native_metric_configuration.to_hash()
  end

  should 'create appropriate metric type' do
    assert @native_metric_configuration.metric.instance_of?(Kalibro::NativeMetric)
    assert @compound_metric_configuration.metric.instance_of?(Kalibro::CompoundMetric)
  end

  should 'add a range to an empty range list' do
    @metric_configuration_without_ranges.add_range @excellent_range
    assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range]
  end
  
  should 'add a range to an non-empty range list' do
    @metric_configuration_without_ranges.ranges = [@excellent_range]
    @metric_configuration_without_ranges.add_range @bad_range
    assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range, @bad_range]
  end

  should 'save metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => @native_metric_configuration_hash,
        :configuration_name => @native_metric_configuration.configuration_name
      })
    @native_metric_configuration.save
  end

  should 'get metric configuration by name and configuration name' do
    request_body = {
      :configuration_name => @native_metric_configuration.configuration_name,
      :metric_name => @native_metric_configuration.metric.name
    }
    response_hash = {:metric_configuration => @native_metric_configuration_hash}
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, request_body).returns(response_hash)
    metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@native_metric_configuration.configuration_name,
                                                                                         @native_metric_configuration.metric.name)
    assert_equal @native_metric_configuration.code, metric_configuration.code
  end

  should 'destroy metric configuration by name' do
    request_body = {
      :configuration_name => @native_metric_configuration.configuration_name,
      :metric_name => @native_metric_configuration.metric.name
    }
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :remove_metric_configuration, request_body)
    @native_metric_configuration.destroy
  end

end