require "rails_helper" RSpec.describe MaintenanceSchedule do it "has a valid factory" do expect(build(:maintenance_schedule)).to be_valid end it "requires all fields" do schedule = build(:maintenance_schedule, vehicle: nil, maintenance_type: nil, mileage_interval: nil, time_interval: nil) expect(schedule).not_to be_valid expect(schedule.errors.attribute_names).to include(:vehicle, :maintenance_type, :mileage_interval, :time_interval) end it "requires positive integer intervals" do schedule = build(:maintenance_schedule, mileage_interval: 0, time_interval: 0) expect(schedule).not_to be_valid expect(schedule.errors[:mileage_interval]).to be_present expect(schedule.errors[:time_interval]).to be_present end it "requires maintenance type to be unique per vehicle case-insensitively" do vehicle = create(:vehicle) create(:maintenance_schedule, vehicle: vehicle, maintenance_type: "Oil Change") duplicate = build(:maintenance_schedule, vehicle: vehicle, maintenance_type: "oil change") other_vehicle_schedule = build(:maintenance_schedule, maintenance_type: "oil change") expect(duplicate).not_to be_valid expect(duplicate.errors[:maintenance_type]).to be_present expect(other_vehicle_schedule).to be_valid end end