From 3e1202cd623f288db133e0e77c882cb196456877 Mon Sep 17 00:00:00 2001 From: Skud Date: Wed, 15 May 2013 15:52:10 +1000 Subject: [PATCH] prettify display of orders --- app/controllers/order_items_controller.rb | 4 ++- app/controllers/orders_controller.rb | 3 ++- app/views/orders/index.html.haml | 25 ++++++++----------- .../order_items_controller_spec.rb | 12 ++++++++- spec/controllers/orders_controller_spec.rb | 10 +++++--- spec/views/orders/index.html.haml_spec.rb | 16 ++++++------ 6 files changed, 41 insertions(+), 29 deletions(-) diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb index 58e17825b..9da704fab 100644 --- a/app/controllers/order_items_controller.rb +++ b/app/controllers/order_items_controller.rb @@ -1,9 +1,10 @@ class OrderItemsController < ApplicationController load_and_authorize_resource + # GET /order_items # GET /order_items.json def index - @order_items = OrderItem.all + @order_items = OrderItem.joins(:order).where(:orders => {:member_id => current_member.id}) respond_to do |format| format.html # index.html.erb @@ -42,6 +43,7 @@ class OrderItemsController < ApplicationController # POST /order_items.json def create @order_item = OrderItem.new(params[:order_item]) + @order_item.order = current_member.current_order || Order.create(:member_id => current_member.id) respond_to do |format| if @order_item.save diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index ff6f0a9fb..f8b24442d 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,9 +1,10 @@ class OrdersController < ApplicationController load_and_authorize_resource + # GET /orders # GET /orders.json def index - @orders = Order.all + @orders = Order.find_all_by_member_id(current_member.id) respond_to do |format| format.html # index.html.erb diff --git a/app/views/orders/index.html.haml b/app/views/orders/index.html.haml index 4384b82fc..d3b5dee7f 100644 --- a/app/views/orders/index.html.haml +++ b/app/views/orders/index.html.haml @@ -1,19 +1,16 @@ -%h1 Listing orders +- content_for :title, "Order History" -%table +%table.table-striped %tr - %th Member + %th Order number + %th Order began + %th Order completed + %th Number of items %th - %th - %th - - @orders.each do |order| %tr - %td= order.member_id - %td= link_to 'Show', order - %td= link_to 'Edit', edit_order_path(order) - %td= link_to 'Destroy', order, :method => :delete, :data => { :confirm => 'Are you sure?' } - -%br - -= link_to 'New Order', new_order_path + %td= order.id + %td= order.created_at.to_s + %td= order.completed_at.to_s + %td= order.order_items.count + %td= link_to 'Show', order, :class => 'btn btn-small' diff --git a/spec/controllers/order_items_controller_spec.rb b/spec/controllers/order_items_controller_spec.rb index ff0740951..801b687f4 100644 --- a/spec/controllers/order_items_controller_spec.rb +++ b/spec/controllers/order_items_controller_spec.rb @@ -10,7 +10,10 @@ describe OrderItemsController do describe "GET index" do it "assigns all order_items as @order_items" do - order_item = OrderItem.create! valid_attributes + member = FactoryGirl.create(:member) + sign_in member + order = FactoryGirl.create(:order, :member_id => member.id) + order_item = FactoryGirl.create(:order_item, :order_id => order.id) get :index, {} assigns(:order_items).should eq([order_item]) end @@ -57,6 +60,13 @@ describe OrderItemsController do post :create, {:order_item => valid_attributes} response.should redirect_to(OrderItem.last) end + + it 'creates an order for you' do + expect { + post :create, {:order_item => valid_attributes} + }.to change(Order, :count).by(1) + OrderItem.last.order.should be_an_instance_of Order + end end describe "with invalid params" do diff --git a/spec/controllers/orders_controller_spec.rb b/spec/controllers/orders_controller_spec.rb index 7c1c2ae7b..fe3557556 100644 --- a/spec/controllers/orders_controller_spec.rb +++ b/spec/controllers/orders_controller_spec.rb @@ -5,7 +5,7 @@ describe OrdersController do login_member(:admin_member) def valid_attributes - { "member_id" => "MyString" } + { "member_id" => 1 } end def valid_session @@ -14,7 +14,9 @@ describe OrdersController do describe "GET index" do it "assigns all orders as @orders" do - order = Order.create! valid_attributes + member = FactoryGirl.create(:member) + sign_in member + order = Order.create!(:member_id => member.id) get :index, {} assigns(:orders).should eq([order]) end @@ -22,7 +24,9 @@ describe OrdersController do describe "GET show" do it "assigns the requested order as @order" do - order = Order.create! valid_attributes + member = FactoryGirl.create(:member) + sign_in member + order = Order.create!(:member_id => member.id) get :show, {:id => order.to_param} assigns(:order).should eq(order) end diff --git a/spec/views/orders/index.html.haml_spec.rb b/spec/views/orders/index.html.haml_spec.rb index 23c957236..139efab9b 100644 --- a/spec/views/orders/index.html.haml_spec.rb +++ b/spec/views/orders/index.html.haml_spec.rb @@ -2,19 +2,17 @@ require 'spec_helper' describe "orders/index" do before(:each) do - assign(:orders, [ - stub_model(Order, - :member_id => "Member" - ), - stub_model(Order, - :member_id => "Member" - ) - ]) + @member = FactoryGirl.create(:member) + sign_in @member + @order1 = FactoryGirl.create(:order) + @order2 = FactoryGirl.create(:completed_order) + assign(:orders, [ @order1, @order2 ]) end it "renders a list of orders" do render # Run the generator again with the --webrat flag if you want to use webrat matchers - assert_select "tr>td", :text => "Member".to_s, :count => 2 + assert_select "tr>td", :text => @order1.id + assert_select "tr>td", :text => @order2.id end end