Also decrement placed counter when immediately goes to delivered without in_process

This commit is contained in:
2014-03-07 18:45:11 +01:00
parent 99473758e6
commit a2ce77e9e1
2 changed files with 14 additions and 1 deletions
+4
View File
@@ -92,15 +92,19 @@ class Order
end end
def is_delivered! def is_delivered!
decrement_placed = placed?
self.state = 'delivered' self.state = 'delivered'
if save if save
orders_in_process_count = supplier.decrement_orders_in_process_count! 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 for user_id in list.user_ids
broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id 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_in_process_count', count: orders_in_process_count
broadcast_user user_id, 'orders_placed_count', count: orders_placed_count if decrement_placed
end end
broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id 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_in_process_count', count: orders_in_process_count
broadcast_supplier supplier_id, 'orders_placed_count', count: orders_placed_count if decrement_placed
end end
end end
+10 -1
View File
@@ -82,16 +82,25 @@ describe Order do
describe 'counters' do describe 'counters' do
before do before do
# hack some initial values # 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 Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_in_process", 7
end end
it 'decreases the orders_in_process count and communicates it to user' do 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) 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 end
it 'decreases the orders_in_process count and communicates it to supplier' do 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) 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 end
end end