Files
openfoodnetwork/spec/models/enterprise_fee_adjustments_spec.rb
2024-05-09 12:24:41 +10:00

117 lines
3.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe EnterpriseFeeAdjustments do
let(:tax_rate) { create(:tax_rate, amount: 0.1) }
let(:line_item) { create(:line_item) }
let(:line_item2) { create(:line_item) }
let(:enterprise_fee) { create(:enterprise_fee, tax_category: tax_rate.tax_category) }
let(:fee_adjustment) {
create( :adjustment, originator: enterprise_fee, adjustable: line_item, state: "closed")
}
let(:fee_adjustment2) {
create( :adjustment, originator: enterprise_fee, adjustable: line_item, state: "closed")
}
describe "#total_additional_tax" do
it "calculates total tax" do
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment,
amount: 10.0,
state: "closed",
included: false
)
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment2,
amount: 5.0,
state: "closed",
included: false
)
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment, fee_adjustment2])
expect(enterprise_fee_adjustments.total_additional_tax).to eq(15.0)
end
context "with no tax adjustment" do
it "returns 0.0" do
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment])
expect(enterprise_fee_adjustments.total_additional_tax).to eq(0.0)
end
end
context "with tax included in price" do
it "returns 0.0" do
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment,
amount: 10.0,
state: "closed",
included: true
)
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment])
expect(enterprise_fee_adjustments.total_additional_tax).to eq(0.0)
end
end
end
describe "total_included_tax" do
it "calculates total tax" do
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment,
amount: 10.0,
state: "closed",
included: true
)
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment2,
amount: 5.0,
state: "closed",
included: true
)
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment, fee_adjustment2])
expect(enterprise_fee_adjustments.total_included_tax).to eq(15.0)
end
context "with no tax adjustment" do
it "returns 0.0" do
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment])
expect(enterprise_fee_adjustments.total_additional_tax).to eq(0.0)
end
end
context "with tax excluded from price" do
it "returns 0.0" do
create(
:adjustment,
originator: tax_rate,
adjustable: fee_adjustment,
amount: 10.0,
state: "closed",
included: false
)
enterprise_fee_adjustments = EnterpriseFeeAdjustments.new([fee_adjustment])
expect(enterprise_fee_adjustments.total_included_tax).to eq(0.0)
end
end
end
end