|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe BikesController do
|
|
|
|
|
|
|
|
let(:user){ create :user }
|
|
|
|
let(:bike){ create :bike }
|
|
|
|
|
|
|
|
before :each do
|
|
|
|
sign_in user
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#index" do
|
|
|
|
it "assignes unsold bikes" do
|
|
|
|
bike = create :bike, date_sold: nil, purpose: "Sale"
|
|
|
|
get :index
|
|
|
|
expect(assigns(:unsold_bikes)).to eq([bike])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#create" do
|
|
|
|
it "creates a new bike with valid credentials" do
|
|
|
|
expect{
|
|
|
|
post :create, bike: attributes_for(:bike)
|
|
|
|
}.to change(Bike, :count).by(1)
|
|
|
|
end
|
|
|
|
it "redirects to new bike path" do
|
|
|
|
expect(post :create, bike: attributes_for(:bike)).to redirect_to(new_bike_path)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
describe "#new" do
|
|
|
|
it "assigns a log number" do
|
|
|
|
create :bike, log_number: 3
|
|
|
|
get :new
|
|
|
|
expect(assigns(:log_number)).to eq(4)
|
|
|
|
end
|
|
|
|
it "assigns the previous bike" do
|
|
|
|
previous_bike = create :bike, log_number: 3
|
|
|
|
get :new
|
|
|
|
expect(assigns(:previous_bike)).to eq(previous_bike)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#edit" do
|
|
|
|
before do
|
|
|
|
@previous_bike = create :bike, log_number: 2
|
|
|
|
@current_bike = create :bike, log_number: 3
|
|
|
|
@next_bike = create :bike, log_number: 4
|
|
|
|
end
|
|
|
|
it "assigns the current, previous, and next bikes" do
|
|
|
|
get :edit, id: @current_bike.id
|
|
|
|
expect(assigns(:previous_bike)).to eq(@previous_bike)
|
|
|
|
expect(assigns(:bike)).to eq(@current_bike)
|
|
|
|
expect(assigns(:next_bike)).to eq(@next_bike)
|
|
|
|
end
|
|
|
|
it "assigns a client if there is one" do
|
|
|
|
@client = create :client, bike: @current_bike
|
|
|
|
get :edit, id: @current_bike.id
|
|
|
|
expect(assigns(:client)).to eq(@client)
|
|
|
|
end
|
|
|
|
it "does not assign a client if there is none" do
|
|
|
|
get :edit, id: @current_bike.id
|
|
|
|
expect(assigns(:client)).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#update" do
|
|
|
|
it "redirects to edit bike path when bike is updated" do
|
|
|
|
bike = create :bike
|
|
|
|
expect( put :update, id: bike.id, bike: {brand: "foobar"} ).to redirect_to action: :edit, id: assigns(:bike).id
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|