Files
car-tracker/spec/models/fuel_entry_spec.rb
T
bionickatana 0826d267f2
CI / scan_ruby (push) Failing after 1m5s
CI / scan_js (push) Failing after 6s
CI / lint (push) Failing after 1m29s
Finished phase005
2026-09-16 15:34:50 -06:00

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