-
-
Save theCrab/511fb75d6ed870a0e00d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Vehicle | |
include DataMapper::Resource | |
property :id, UUID, key: true | |
property :registration, String, required: true | |
property :make, String, required: true | |
property :type, String, required: true | |
property :date_of_reg, Date, required: true | |
property :taxi_plate, String, required: true | |
property :number_of_seats, Integer, required: true | |
property :driver_1, UUID, required: true | |
property :driver_2, UUID | |
property :colour, Integer, required: true | |
property :owner_id, UUID | |
property :created_at, DateTime | |
property :updated_at, DateTime | |
belongs_to :person | |
has n, :licenses | |
# belongs_to :owner, model: Person | |
def driver | |
Person.first(driver_1) | |
end | |
def drivers | |
Person.get(driver_1, driver_2) | |
end | |
def owner | |
Person.first(owner_id) | |
end | |
end #Vehicle | |
class License | |
include DataMapper::Resource | |
property :id, Serial | |
property :number, String #, required: true | |
property :provider, String #, required: true | |
property :starts_on, Date #, required: true | |
property :expires_on, Date #, required: true | |
property :type, Enum[:driving, :insurance, :driver_badge, :vehicle_badge, :mot], default: :driving # add a Taxi private_hire/hackney license type | |
property :active, Boolean #, default: true | |
belongs_to :person | |
belongs_to :vehicle | |
# belongs_to :company | |
end #License | |
# ###### SPECS ####### | |
describe Vehicle do | |
let(:driver) { Person.create(first_name: 'Nelson', last_name: 'Kelem') } | |
let(:vehicle) do | |
Vehicle.create( | |
registration: 'N880 PFW', | |
make: 'BMW', | |
type: 'Saloon', | |
date_of_reg: '2006-09009', | |
taxi_plate: 'NKD675NEW-0023', | |
number_of_seats: 7, | |
driver_1: driver.id, | |
colour: 'Red' | |
) | |
end | |
# after(:all) do | |
# driver.destroy | |
# vehicle.destroy | |
# end | |
context "Details" do | |
it "should have a valid registration" do | |
expect(vehicle.registration).to eql('N880 PFW') | |
end | |
it "should have a make" do | |
expect(vehicle.make).to eql('BMW') | |
end | |
it "should have a colour" do | |
expect(vehicle.colour).to eql('Red') | |
end | |
it "should have Seat capacity" do | |
expect(vehicle.number_of_seats).to eql(7) | |
end | |
end | |
context "When first created" do | |
it "should have an owner" do | |
vehicle.owner_id = driver.id | |
vehicle.owner.should be(driver) | |
end | |
end | |
context "Lincenses" do | |
before do | |
vehicle.licenses.create( | |
number: 'KELE807070', | |
provider: 'Garage', | |
starts_on: Date.today, | |
expires_on: Date.today + 60, | |
active: true | |
# , | |
# vehicle_id: vehicle.id | |
) | |
end | |
it "should be added" do | |
vehicle.licenses.count.should eql(1) | |
end | |
end | |
end | |
# #### ERRORS #### | |
Failures: | |
1) Vehicle Lincenses should be added | |
Failure/Error: vehicle.licenses.create( | |
DataMapper::UnsavedParentError: | |
The source must be saved before creating a resource | |
2) Vehicle When first created should have an owner | |
Failure/Error: vehicle.owner.should be(driver) | |
expected #<Person:70340053053820> => #<Person @id=nil @first_name="Nelson" @last_name="Kelem" @email=nil @phone=nil @mobile=nil @created_at=nil @updated_at=nil> | |
got #<NilClass:4> => nil | |
Compared using equal?, which compares object identity, | |
but expected and actual are not the same object. Use | |
`expect(actual).to eq(expected)` if you don't care about | |
object identity in this example. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment