Commit ed86c4b3e03e388c1f9097d32cb22cb4d05eb129

Authored by Heitor
Committed by Rafael Manzo
1 parent 8c64ffc8

Add test for metric configuration creation with invalid metric

Test the path where the provided metric's type is different from the
controller's one.

Signed-off-by: Rafael Reggiani Manzo <rr.manzo@gmail.com>
spec/controllers/metric_configurations_controller_spec.rb
@@ -71,26 +71,42 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -71,26 +71,42 @@ describe MetricConfigurationsController, :type =&gt; :controller do
71 before :each do 71 before :each do
72 KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration 72 KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
73 subject.expects(:kalibro_configuration_owner?).returns true 73 subject.expects(:kalibro_configuration_owner?).returns true
74 - ReadingGroup.expects(:find).with(reading_group.id).returns(reading_group)  
75 end 74 end
76 75
77 - context 'with valid fields' do 76 + context 'with valid metric' do
78 before :each do 77 before :each do
79 - MetricConfiguration.any_instance.expects(:save).returns(true)  
80 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector) 78 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector)
81 metric_collector.expects(:find_metric_by_name).with(metric_configuration.metric.name).returns(metric_configuration.metric) 79 metric_collector.expects(:find_metric_by_name).with(metric_configuration.metric.name).returns(metric_configuration.metric)
  80 + ReadingGroup.expects(:find).with(reading_group.id).returns(reading_group)
  81 + end
82 82
83 - post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params, metric_collector_name: metric_collector.name, metric_name: metric_configuration.metric.name 83 + context 'with valid fields' do
  84 + before :each do
  85 + MetricConfiguration.any_instance.expects(:save).returns(true)
  86 +
  87 + post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params, metric_collector_name: metric_collector.name, metric_name: metric_configuration.metric.name
  88 + end
  89 +
  90 + it { is_expected.to respond_with(:redirect) }
84 end 91 end
85 92
86 - it { is_expected.to respond_with(:redirect) } 93 + context 'with invalid fields' do
  94 + before :each do
  95 + MetricConfiguration.any_instance.expects(:save).returns(false)
  96 +
  97 + post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params, metric_collector_name: metric_collector.name, metric_name: metric_configuration.metric.name
  98 + end
  99 +
  100 + it { is_expected.to render_template(:new) }
  101 + end
87 end 102 end
88 103
89 - context 'with invalid fields' do 104 + context 'with invalid metric collector, metric or metric type' do
  105 + let(:invalid_metric) { FactoryGirl.build(:hotspot_metric) }
  106 +
90 before :each do 107 before :each do
91 - MetricConfiguration.any_instance.expects(:save).returns(false)  
92 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector) 108 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector)
93 - metric_collector.expects(:find_metric_by_name).with(metric_configuration.metric.name).returns(metric_configuration.metric) 109 + metric_collector.expects(:find_metric_by_name).with(metric_configuration.metric.name).returns(invalid_metric)
94 110
95 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params, metric_collector_name: metric_collector.name, metric_name: metric_configuration.metric.name 111 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params, metric_collector_name: metric_collector.name, metric_name: metric_configuration.metric.name
96 end 112 end