Also decrement placed counter when immediately goes to delivered without in_process
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user