|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Bike do
|
|
|
|
|
|
|
|
describe "#sold?" do
|
|
|
|
it "returns true if the date_sold is present" do
|
|
|
|
bike = build :bike, date_sold: Time.zone.now
|
|
|
|
expect(bike.sold?).to be true
|
|
|
|
end
|
|
|
|
it "returns false if date_sold is not present" do
|
|
|
|
bike = build :bike
|
|
|
|
expect(bike.sold?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#post_to_bike_index" do
|
|
|
|
it "does not calls BikeIndexLogger if no bike_index_id is present" do
|
|
|
|
expect(BikeIndexLogger).not_to receive(:perform_async)
|
|
|
|
create(:bike, bike_index_id: nil)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if bike_index_id is present" do
|
|
|
|
bike = create(:bike, bike_index_id: 1)
|
|
|
|
expect(bike.post_to_bike_index).to be_truthy
|
|
|
|
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 "returns bikes that were assigned to clients whose application has been voided" do
|
|
|
|
bike = create :bike, :freecyclery
|
|
|
|
create :client, bike_id: bike.id, application_voided: true
|
|
|
|
expect(Bike.available_for_freecyclery).to eq [bike]
|
|
|
|
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
|