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