mezuro_plugin_myprofile_controller_test.rb 12.2 KB
require 'test_helper'

require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures"
require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures"

class MezuroPluginMyprofileControllerTest < ActionController::TestCase

  def setup
    @controller = MezuroPluginMyprofileController.new
    @request = ActionController::TestRequest.new
    @response = ActionController::TestResponse.new
    @profile = fast_create(Community)

    @base_tool = BaseToolFixtures.base_tool
    @base_tool_hash = BaseToolFixtures.base_tool_hash
    @metric = NativeMetricFixtures.amloc
    @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration
    @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash
    @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration
    @compound_metric_configuration_hash = MetricConfigurationFixtures.sc_metric_configuration_hash
    @configuration = ConfigurationFixtures.configuration
    @configuration_hash = ConfigurationFixtures.configuration_hash

    Kalibro::Configuration.expects(:all_names).returns([])
    @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name)
    @content.expects(:send_configuration_to_service).returns(nil)
    @content.save

    @native_hash = @metric_configuration.to_hash.merge({:configuration_name => @metric_configuration.configuration_name})
    @native_hash.delete :attributes!    
    @compound_hash = @compound_metric_configuration.to_hash.merge({:configuration_name => @compound_metric_configuration.configuration_name})
    @compound_hash.delete :attributes!
    
    @range = RangeFixtures.range_excellent
    @range_hash = RangeFixtures.range_excellent_hash
  end
  
  should 'test choose base tool' do
    Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool_names).returns({:base_tool_name => @base_tool.name})
    get :choose_base_tool, :profile => @profile.identifier, :id => @content.id
    assert_equal [@base_tool.name], assigns(:base_tools)
    assert_equal @content, assigns(:configuration_content)
    assert_response 200
  end

  should 'test choose metric' do
    Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash})
    get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @base_tool.name, assigns(:base_tool)
    assert_equal @base_tool.supported_metric[0].name, assigns(:supported_metrics)[0].name
    assert_response 200
  end

  should 'test new metric configuration' do
    Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash})
    get :new_metric_configuration, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name, :metric_name => @metric.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @metric.name, assigns(:metric).name
    assert_response 200
  end
  
  
  should 'test new compound metric configuration' do
    Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, {:configuration_name => @content.name}).returns({:configuration => @configuration_hash})
    get :new_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id
    assert_equal @content, assigns(:configuration_content)
    assert_equal @configuration.metric_configuration[0].code, assigns(:metric_configurations)[0].code
    assert_response 200
  end

  should 'test edit metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric_configuration.metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @metric_configuration.code, assigns(:metric_configuration).code
    assert_equal @metric_configuration.metric.name, assigns(:metric).name
    assert_response 200
  end
  
  should 'test edit compound metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @compound_metric_configuration.metric.name}).returns({:metric_configuration => @compound_metric_configuration_hash})
    Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, {:configuration_name => @content.name}).returns({:configuration => @configuration_hash})
    get :edit_compound_metric_configuration,
        :profile => @profile.identifier,
        :id => @content.id,
        :metric_name => @compound_metric_configuration.metric.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @compound_metric_configuration.code, assigns(:metric_configuration).code
    assert_equal @compound_metric_configuration.metric.name, assigns(:metric).name
    assert_equal @configuration.metric_configuration[0].code, assigns(:metric_configurations)[0].code
    assert_response 200
  end
  
  should 'test create native metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => @metric_configuration.to_hash,
        :configuration_name => @metric_configuration.configuration_name})
    get :create_metric_configuration,
        :profile => @profile.identifier,
        :id => @content.id,
        :metric_configuration => @native_hash
    assert_response 302
  end
  
  should 'test compound metric creation' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
      :metric_configuration => @compound_metric_configuration.to_hash,
      :configuration_name => @compound_metric_configuration.configuration_name})
    get :create_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, 
    :metric_configuration => @compound_hash
    assert_response 302
  end

  should 'test update native metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric_configuration.metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => @metric_configuration.to_hash,
        :configuration_name => @metric_configuration.configuration_name})
    get :update_metric_configuration, :profile => @profile.identifier, :id => @content.id, 
      :metric_configuration => @native_hash
    assert_equal @content, assigns(:configuration_content)
    assert_response 302
  end

  should 'test update compound metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @compound_metric_configuration.metric.name}).returns({:metric_configuration => @compound_metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => @compound_metric_configuration.to_hash,
        :configuration_name => @compound_metric_configuration.configuration_name})
    get :update_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, 
    :metric_configuration => @compound_hash
    assert_equal @content, assigns(:configuration_content)
    assert_response 302
  end

  should 'test remove metric configuration' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :remove_metric_configuration, {
        :metric_name => @metric.name,
        :configuration_name => @metric_configuration.configuration_name})
    get :remove_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
    assert_response 302
  end

  should 'test new range' do
    get :new_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @metric.name, assigns(:metric_name)
    assert_response 200
  end

  should 'test edit range' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    get :edit_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name, :beginning_id => @range.beginning
    assert_equal @content, assigns(:configuration_content)
    assert_equal @metric.name, assigns(:metric_name)
    assert_equal @range.beginning, assigns(:beginning_id)
    assert_equal @range.end, assigns(:range).end
    assert_response 200
  end

  should 'test create instance range' do
    metric_configuration = @metric_configuration
    metric_configuration.add_range(@range)
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => metric_configuration.to_hash,
        :configuration_name => metric_configuration.configuration_name})
    get :create_range, :profile => @profile.identifier, :range => @range_hash, :id => @content.id, :metric_name => @metric.name
    assert_equal @content, assigns(:configuration_content)
    assert_equal @range.end, assigns(:range).end
    assert_response 200
  end

  should 'test update range' do
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => @metric_configuration.to_hash,
        :configuration_name => @metric_configuration.configuration_name})
    get :update_range,
        :profile => @profile.identifier,
        :range => @range_hash,
        :id => @content.id,
        :metric_name => @metric.name,
        :beginning_id => @range.beginning
    assert_response 200
  end

  should 'test remove range' do
    metric_configuration = @metric_configuration
    metric_configuration.ranges.delete_if { |range| range.beginning == @range.beginning.to_f }
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, {
      :configuration_name => @content.name,
      :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash})
    Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {
        :metric_configuration => metric_configuration.to_hash,
        :configuration_name => metric_configuration.configuration_name})
    get :remove_range,
        :profile => @profile.identifier,
        :id => @content.id,
        :metric_name => @metric.name,
        :beginning_id => @range.beginning
     assert_response 302
  end

end