Commit 8c9198e

mo khan <mo@mokhan.ca>
2015-02-28 17:32:54
load the items#show page.
1 parent 1cb3716
Changed files (2)
app
spec
app/controllers/items_controller.rb
@@ -1,9 +1,12 @@
 class ItemsController < ApplicationController
+  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
+
   def index
     @items = current_user.items
   end
 
   def show
+    @item = current_user.items.find(params[:id])
   end
 
   def new
@@ -20,4 +23,10 @@ class ItemsController < ApplicationController
 
   def destroy
   end
+
+  private
+
+  def record_not_found
+    render text: "404 Not Found", status: 404
+  end
 end
spec/controllers/items_controller_spec.rb
@@ -1,4 +1,4 @@
-require 'rails_helper'
+require "rails_helper"
 
 RSpec.describe ItemsController, type: :controller do
 
@@ -14,10 +14,26 @@ RSpec.describe ItemsController, type: :controller do
       let!(:my_item) { create(:item, user: user) }
       let!(:their_item) { create(:item, user: other_user) }
 
-      it 'loads all your items' do
+      it "loads all your items" do
         get :index
         expect(assigns(:items)).to match_array([my_item])
       end
     end
+
+    describe "#show" do
+      let(:item) { create(:item, user: user) }
+      let(:other_user) { create(:user) }
+      let(:other_guys_item) { create(:item, user: other_user) }
+
+      it "loads your item" do
+        get :show, id: item.id
+        expect(assigns(:item)).to eql(item)
+      end
+
+      it 'does not load other peoples items' do
+        get :show, id: other_guys_item.id
+        expect(response.status).to eql(404)
+      end
+    end
   end
 end