Browse Source

lk | adds links to previous and next bikes on bike edit page and removes

bike#show route
master
Louis Knapp 8 years ago
parent
commit
692f12d47d
  1. 16
      app/controllers/bikes_controller.rb
  2. 10
      app/views/bikes/edit.html.haml
  3. 4
      app/views/bikes/new.html.haml
  4. 2
      config/routes.rb
  5. 37
      spec/controllers/bikes_controller_spec.rb

16
app/controllers/bikes_controller.rb

@ -7,14 +7,16 @@ class BikesController < ApplicationController
@unsold_bikes = @bikes.select{|bike| bike.date_sold.nil? && bike.purpose == "Sale"}
end
def show; end
def new
@bike = Bike.new
@log_number = Bike.order(:log_number).last.log_number + 1
@previous_bike = Bike.order(:log_number).last
@log_number = @previous_bike.log_number + 1
end
def edit; end
def edit
@next_bike = Bike.where(log_number: @bike.log_number + 1).first
@previous_bike = Bike.where(log_number: @bike.log_number - 1).first
end
def print_select
@bikes = Bike.where.not(purpose: "Freecyclery").order(:log_number).reverse_order.paginate(:page => params[:page], :per_page => 30)
@ -45,7 +47,6 @@ class BikesController < ApplicationController
end
def update
if @bike.update(bike_params)
redirect_to @bike, notice: 'Bike was successfully updated.'
else
@ -53,11 +54,6 @@ class BikesController < ApplicationController
end
end
def destroy
@bike.destroy
redirect_to bikes_url
end
def mark_as_sold
current_date = Time.new.strftime("%Y-%m-%d")
@bike = Bike.find(params[:id])

10
app/views/bikes/edit.html.haml

@ -5,6 +5,12 @@
.col-sm-3.col-sm-offset-3
=button_to "Mark as sold", {action: "mark_as_sold", id: @bike.id}, method: :patch, class: "btn btn-default"
= render 'edit_form'
= link_to 'Show', @bike
- if @next_bike
= link_to 'Next Bike', edit_bike_path(@next_bike)
- else
= link_to 'New Bike', new_bike_path
|
= link_to 'Back', bikes_path
= link_to 'All Bikes', bikes_path
- if @previous_bike
|
= link_to 'Previous Bike', edit_bike_path(@previous_bike)

4
app/views/bikes/new.html.haml

@ -1,4 +1,6 @@
.container
%h1 New bike
= render 'new_form'
= link_to 'Back', bikes_path
= link_to 'All Bikes', bikes_path
|
= link_to 'Previous Bike', edit_bike_path(@previous_bike)

2
config/routes.rb

@ -6,7 +6,7 @@ Bikedb::Application.routes.draw do
mount Sidekiq::Web => '/sidekiq'
resources :bikes do
resources :bikes, except: [:show, :destroy] do
get 'search' => 'bikes#search', on: :collection
get 'print_select' => 'bikes#print_select', on: :collection
get 'print_labels' => 'bikes#print_labels', on: :collection

37
spec/controllers/bikes_controller_spec.rb

@ -2,40 +2,57 @@ require 'spec_helper'
describe BikesController do
let(:user){FactoryGirl.create(:user)}
let(:bike){FactoryGirl.create(:bike)}
let(:user){ create :user }
let(:bike){ create :bike }
before :each do
sign_in user
end
describe "GET #index" do
describe "#index" do
it "assignes unsold bikes" do
bike = FactoryGirl.create(:bike, date_sold: nil, purpose: "Sale")
bike = create :bike, date_sold: nil, purpose: "Sale"
get :index
expect(assigns(:unsold_bikes)).to eq([bike])
end
end
describe "POST #create" do
describe "#create" do
it "creates a new bike with valid credentials" do
expect{
post :create, bike: FactoryGirl.attributes_for(:bike)
post :create, bike: attributes_for(:bike)
}.to change(Bike, :count).by(1)
end
it "redirects to new bike path" do
expect(post :create, bike: FactoryGirl.attributes_for(:bike)).to redirect_to(new_bike_path)
expect(post :create, bike: attributes_for(:bike)).to redirect_to(new_bike_path)
end
end
describe "GET #new" do
describe "#new" do
it "assigns a log number" do
FactoryGirl.create(:bike, log_number: 3)
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
end
end

Loading…
Cancel
Save