Sha256: ed3b3c090cdd1992b18f840dde581c85f52ceac688ac47edbd7f9f7bf3801ff1

Contents?: true

Size: 1.82 KB

Versions: 18

Compression:

Stored size: 1.82 KB

Contents

require "rails_helper"

describe Dorsale::BillingMachine::InvoiceLine, type: :model do
  it { is_expected.to belong_to :invoice }
  it { is_expected.to validate_presence_of :invoice }

  it { is_expected.to respond_to :quantity }
  it { is_expected.to respond_to :label }
  it { is_expected.to respond_to :vat_rate }
  it { is_expected.to respond_to :total }
  it { is_expected.to respond_to :unit }
  it { is_expected.to respond_to :unit_price }

  it "should have a valid factory" do
    expect(build(:billing_machine_invoice_line)).to be_valid
  end

  describe "default values" do
    it "quantity should be 0" do
      expect(described_class.new.quantity).to eq 0
    end

    it "unit_price should be 0" do
      expect(described_class.new.unit_price).to eq 0
    end

    it "vat_rate should be 0" do
      expect(described_class.new.vat_rate).to eq Dorsale::BillingMachine.default_vat_rate
    end
  end

  it "should be sorted by created_at" do
    line1 = create(:billing_machine_invoice_line, :created_at => Time.zone.now + 1.minute)
    line2 = create(:billing_machine_invoice_line, :created_at => Time.zone.now + 2.minutes)
    line3 = create(:billing_machine_invoice_line, :created_at => Time.zone.now + 3.minutes)
    line4 = create(:billing_machine_invoice_line, :created_at => Time.zone.now + 4.minutes)
    line3.update!(:created_at => Time.zone.now + 5.minutes)

    lines = described_class.all
    expect(lines).to eq [line1, line2, line4, line3]
  end

  it "should update the total upon save" do
    line = create(:billing_machine_invoice_line, quantity: 12.34, unit_price: 12.34, total: 0)
    expect(line.total.to_f).to eq 152.28
  end

  it "should update the total gracefully with invalid data" do
    line = create(:billing_machine_invoice_line, quantity: nil, unit_price: nil, total: 0)
    expect(line.total.to_f).to eq 0
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
dorsale-3.20.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.19.1 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.19.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.18.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.17.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.16.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.15.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.11 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.10 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.9 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.8 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.7 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.6 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.5 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.3 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.2 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.1 spec/models/dorsale/billing_machine/invoice_line_spec.rb
dorsale-3.14.0 spec/models/dorsale/billing_machine/invoice_line_spec.rb