61 lines
1.7 KiB
Ruby
61 lines
1.7 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe FuelEntry do
|
|
it "has a valid factory" do
|
|
expect(build(:fuel_entry)).to be_valid
|
|
end
|
|
|
|
it "requires all fields" do
|
|
entry = build(
|
|
:fuel_entry,
|
|
vehicle: nil,
|
|
updated_by_user: nil,
|
|
odometer: nil,
|
|
gallons_pumped: nil,
|
|
price_paid: nil,
|
|
date: nil
|
|
)
|
|
|
|
expect(entry).not_to be_valid
|
|
expect(entry.errors.attribute_names).to include(:vehicle, :updated_by_user, :odometer, :gallons_pumped, :price_paid, :date)
|
|
end
|
|
|
|
it "requires valid numeric values" do
|
|
entry = build(:fuel_entry, odometer: -1, gallons_pumped: 0, price_paid: 0)
|
|
|
|
expect(entry).not_to be_valid
|
|
expect(entry.errors[:odometer]).to be_present
|
|
expect(entry.errors[:gallons_pumped]).to be_present
|
|
expect(entry.errors[:price_paid]).to be_present
|
|
end
|
|
|
|
it "rejects future dates" do
|
|
entry = build(:fuel_entry, date: Date.current + 1.day)
|
|
|
|
expect(entry).not_to be_valid
|
|
expect(entry.errors[:date]).to be_present
|
|
end
|
|
|
|
it "rejects odometer readings below the vehicle current odometer" do
|
|
vehicle = build(:vehicle, current_odometer: 10_000)
|
|
entry = build(:fuel_entry, vehicle: vehicle, odometer: 9_999)
|
|
|
|
expect(entry).not_to be_valid
|
|
expect(entry.errors[:odometer]).to be_present
|
|
end
|
|
|
|
it "allows odometer readings equal to the vehicle current odometer" do
|
|
vehicle = build(:vehicle, current_odometer: 10_000)
|
|
entry = build(:fuel_entry, vehicle: vehicle, odometer: 10_000)
|
|
|
|
expect(entry).to be_valid
|
|
end
|
|
|
|
it "allows odometer readings above the vehicle current odometer" do
|
|
vehicle = build(:vehicle, current_odometer: 10_000)
|
|
entry = build(:fuel_entry, vehicle: vehicle, odometer: 10_001)
|
|
|
|
expect(entry).to be_valid
|
|
end
|
|
end
|