mirror of
https://github.com/fspc/bike-database.git
synced 2025-02-23 09:33:23 -05:00
lk | add some tests for bike#available_for_freecyclery
This commit is contained in:
parent
2e8edce6ef
commit
87577ab14e
@ -7,6 +7,9 @@ class Bike < ActiveRecord::Base
|
|||||||
validates :serial_number, presence: true
|
validates :serial_number, presence: true
|
||||||
has_one :client
|
has_one :client
|
||||||
|
|
||||||
|
FREECYCLERY = "Freecyclery"
|
||||||
|
SALE = "Sale"
|
||||||
|
|
||||||
def self.bike_types
|
def self.bike_types
|
||||||
[
|
[
|
||||||
["BMX", "BMX"],
|
["BMX", "BMX"],
|
||||||
@ -35,8 +38,8 @@ class Bike < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.available_for_freecyclery
|
def self.available_for_freecyclery
|
||||||
assigned_bikes = Client.all.select{|c| !c.bike_id.nil?}.map(&:bike)
|
assigned_bikes = Client.all.includes(:bike).select{|c| !c.bike_id.nil?}.map(&:bike)
|
||||||
all_freecyclery_bikes = Bike.order(log_number: :desc).select{|bike| bike.purpose == "Freecyclery"}
|
all_freecyclery_bikes = Bike.where(purpose: FREECYCLERY).order(log_number: :desc)
|
||||||
all_freecyclery_bikes - assigned_bikes
|
all_freecyclery_bikes - assigned_bikes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
FactoryGirl.define do
|
|
||||||
factory :bike do
|
|
||||||
sequence(:log_number)
|
|
||||||
brand "Windsor"
|
|
||||||
model "Clockwork"
|
|
||||||
bike_type "Fixed Gear"
|
|
||||||
color "Black"
|
|
||||||
sequence(:serial_number)
|
|
||||||
sequence(:bike_index_id)
|
|
||||||
end
|
|
||||||
end
|
|
19
spec/factories/bikes.rb
Normal file
19
spec/factories/bikes.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
factory :bike do
|
||||||
|
sequence(:log_number)
|
||||||
|
brand "Schwinn"
|
||||||
|
model "Madison"
|
||||||
|
bike_type "Fixed Gear"
|
||||||
|
color "Yellow"
|
||||||
|
sequence(:serial_number)
|
||||||
|
sequence(:bike_index_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
trait :sale do
|
||||||
|
purpose Bike::SALE
|
||||||
|
end
|
||||||
|
|
||||||
|
trait :freecyclery do
|
||||||
|
purpose Bike::FREECYCLERY
|
||||||
|
end
|
||||||
|
end
|
@ -12,4 +12,22 @@ describe Bike do
|
|||||||
expect(bike.post_to_bike_index).to be_truthy
|
expect(bike.post_to_bike_index).to be_truthy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#available_for_freecyclery" do
|
||||||
|
it "does not return bikes that are assigned to clients" do
|
||||||
|
bike = create :bike, :freecyclery
|
||||||
|
create :client, bike_id: bike.id
|
||||||
|
expect(Bike.available_for_freecyclery).to be_empty
|
||||||
|
end
|
||||||
|
it "does not return sales bikes" do
|
||||||
|
bike = create :bike, :sale
|
||||||
|
create :client, bike_id: bike.id
|
||||||
|
expect(Bike.available_for_freecyclery).to be_empty
|
||||||
|
end
|
||||||
|
it "does return bikes without clients" do
|
||||||
|
bike = create :bike, :freecyclery
|
||||||
|
expect(Bike.available_for_freecyclery).to include(bike)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user