Sha256: 2076f3acb12fc5e8508840acbd410a48860a1be9c23d3bc0411553c5b6f9cbf6

Contents?: true

Size: 1.92 KB

Versions: 40

Compression:

Stored size: 1.92 KB

Contents

require "rails_helper"

describe ::Dorsale::BillingMachine::QuotationLine do
  it { is_expected.to belong_to :quotation }
  it { is_expected.to validate_presence_of :quotation }

  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_quotation_line)).to be_valid
  end

  describe "default values" do
    it "quantity should be 0" do
      expect(::Dorsale::BillingMachine::QuotationLine.new.quantity).to eq 0
    end

    it "unit_price should be 0" do
      expect(::Dorsale::BillingMachine::QuotationLine.new.unit_price).to eq 0
    end

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

  it "should be sorted by created_at" do
    line1 = create(:billing_machine_quotation_line,:created_at => DateTime.now + 1.seconds)
    line2 = create(:billing_machine_quotation_line,:created_at => DateTime.now + 2.seconds)
    line3 = create(:billing_machine_quotation_line,:created_at => DateTime.now + 3.seconds)
    line4 = create(:billing_machine_quotation_line,:created_at => DateTime.now + 4.seconds)
    line3.update(:created_at => DateTime.now+5.seconds)
    lines = ::Dorsale::BillingMachine::QuotationLine.all
    expect(lines).to eq [line1, line2, line4, line3]
  end

  it "should update the total upon save" do
    quotation = create(:billing_machine_quotation_line, quantity: 10, unit_price: 10, total: 0)
    expect(quotation.total).to eq(100)
  end

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

end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
dorsale-2.7.3 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.7.2 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.7.1 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.7.0 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.8 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.7 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.6 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.5 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.4 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.3 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.2 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.1 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.6.0 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.5.0 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.4.3 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.4.2 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.4.1 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.4.0 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.3.5 spec/models/dorsale/billing_machine/quotation_line_spec.rb
dorsale-2.3.4 spec/models/dorsale/billing_machine/quotation_line_spec.rb