From a2ce77e9e15b4ba964f4bdaa0e989ff5fa26db5b Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Fri, 7 Mar 2014 18:45:11 +0100 Subject: [PATCH] Also decrement placed counter when immediately goes to delivered without in_process --- app/models/order.rb | 4 ++++ spec/models/order_spec.rb | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/order.rb b/app/models/order.rb index e1219cb3..3d6540f8 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -92,15 +92,19 @@ class Order end def is_delivered! + decrement_placed = placed? self.state = 'delivered' if save orders_in_process_count = supplier.decrement_orders_in_process_count! + orders_placed_count = supplier.decrement_orders_placed_count! if decrement_placed for user_id in list.user_ids broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count + broadcast_user user_id, 'orders_placed_count', count: orders_placed_count if decrement_placed end broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count + broadcast_supplier supplier_id, 'orders_placed_count', count: orders_placed_count if decrement_placed end end diff --git a/spec/models/order_spec.rb b/spec/models/order_spec.rb index dfa7d627..225b8214 100644 --- a/spec/models/order_spec.rb +++ b/spec/models/order_spec.rb @@ -82,16 +82,25 @@ describe Order do describe 'counters' do before do # hack some initial values - Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_delivered", 11 + Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_placed", 11 Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_in_process", 7 end it 'decreases the orders_in_process count and communicates it to user' do expect{ order.is_delivered! }.to broadcast_to_user(user.id).message( 'orders_in_process_count' ).with(count: 6) + supplier.orders_placed_count.should == 10 end it 'decreases the orders_in_process count and communicates it to supplier' do expect{ order.is_delivered! }.to broadcast_to_supplier(supplier.id).message( 'orders_in_process_count' ).with(count: 6) + supplier.orders_placed_count.should == 10 + end + + it 'does not decreases the placed orders count if the order is not placed' do + order = create :order, :active, supplier: supplier, list: list + order.is_delivered! + supplier.orders_placed_count.should == 11 + supplier.orders_in_process_count.should == 6 end end end