diff --git a/app/models/chargeback_rate_detail.rb b/app/models/chargeback_rate_detail.rb index 12f976779ce3..36a4b82e98e0 100644 --- a/app/models/chargeback_rate_detail.rb +++ b/app/models/chargeback_rate_detail.rb @@ -25,7 +25,7 @@ class ChargebackRateDetail < ApplicationRecord def charge(relevant_fields, consumption) result = {} - if (relevant_fields & [metric_key, cost_keys[0]]).present? + if (relevant_fields & ([metric_key] + cost_keys)).present? metric_value, cost = metric_and_cost_by(consumption) if !consumption.chargeback_fields_present && chargeable_field.fixed? cost = 0 diff --git a/spec/models/chargeback_vm_spec.rb b/spec/models/chargeback_vm_spec.rb index 3dd883ef6add..ea5ffb1fbcc1 100644 --- a/spec/models/chargeback_vm_spec.rb +++ b/spec/models/chargeback_vm_spec.rb @@ -188,6 +188,17 @@ expect(subject.storage_cost).to eq(subject.storage_allocated_cost + subject.storage_used_cost) end + context "only memory_cost instead of all report columns" do + let(:options) { base_options.merge(:interval => 'daily', :report_cols => %w(memory_cost)) } + + it "brings in relevant fields needed for calculation" do + memory_allocated_cost = memory_available * hourly_rate * hours_in_day + used_metric = used_average_for(:derived_memory_used, hours_in_day, @vm1) + memory_used_cost = used_metric * hourly_rate * hours_in_day + expect(subject.memory_cost).to eq(memory_allocated_cost + memory_used_cost) + end + end + context "fixed rates" do let(:hourly_fixed_rate) { 10.0 }