Fix and implement supplier counters

This commit is contained in:
2014-03-07 18:29:49 +01:00
parent 95e268adea
commit 99473758e6
25 changed files with 304 additions and 65 deletions
+2 -2
View File
@@ -138,11 +138,11 @@ describe List do
expect{
list.place_order(user, product.id => 3)
}.to broadcast_to_user(user.id).message('orders_in_process_count').with(count: 2)
}.to broadcast_to_user(user.id).message('orders_placed_count').with(count: 2)
expect{
list.place_order(user, product.id => 5)
}.to broadcast_to_supplier(supplier.id).message('orders_in_process_count').with(count: 3)
}.to broadcast_to_supplier(supplier.id).message('orders_placed_count').with(count: 3)
end
end
+14 -14
View File
@@ -47,24 +47,24 @@ describe Order do
describe 'counters' do
before do
# hack some initial values
Qwaiter::Counter.set "supplier:#{supplier.id}:orders_in_process", 7
Qwaiter::Counter.set "supplier:#{supplier.id}:orders_delivered", 9
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_placed", 11
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_in_process", 7
end
it 'reduces the orders_in_process count and communicates it to user' do
expect{ order.is_being_processed! }.to broadcast_to_user(user.id).message( 'orders_in_process_count' ).with(count: 6)
it 'reduces the orders_placed count and communicates it to user' do
expect{ order.is_being_processed! }.to broadcast_to_user(user.id).message( 'orders_placed_count' ).with(count: 10)
end
it 'increases the orders_delivered count and communicates it to user' do
expect{ order.is_being_processed! }.to broadcast_to_user(user.id).message( 'orders_delivered_count' ).with(count: 10)
it 'increases the orders_in_process count and communicates it to user' do
expect{ order.is_being_processed! }.to broadcast_to_user(user.id).message( 'orders_in_process_count' ).with(count: 8)
end
it 'reduces the orders_in_process count and communicates it to supplier' do
expect{ order.is_being_processed! }.to broadcast_to_supplier(supplier.id).message( 'orders_in_process_count' ).with(count: 6)
it 'reduces the orders_placed count and communicates it to supplier' do
expect{ order.is_being_processed! }.to broadcast_to_supplier(supplier.id).message( 'orders_placed_count' ).with(count: 10)
end
it 'increases the orders_in_process count and communicates it to supplier' do
expect{ order.is_being_processed! }.to broadcast_to_supplier(supplier.id).message( 'orders_delivered_count' ).with(count: 10)
expect{ order.is_being_processed! }.to broadcast_to_supplier(supplier.id).message( 'orders_in_process_count' ).with(count: 8)
end
end
@@ -82,16 +82,16 @@ describe Order do
describe 'counters' do
before do
# hack some initial values
Qwaiter::Counter.set "supplier:#{supplier.id}:orders_in_process", 7
Qwaiter::Counter.set "supplier:#{supplier.id}:orders_delivered", 9
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_delivered", 11
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_in_process", 7
end
it 'decreases the orders_delivered count and communicates it to user' do
expect{ order.is_delivered! }.to broadcast_to_user(user.id).message( 'orders_delivered_count' ).with(count: 8)
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)
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_delivered_count' ).with(count: 8)
expect{ order.is_delivered! }.to broadcast_to_supplier(supplier.id).message( 'orders_in_process_count' ).with(count: 6)
end
end
end
+19 -9
View File
@@ -11,9 +11,19 @@ describe Supplier do
create_list :order, 7, :active, supplier: supplier1
create_list :order, 3, :placed, supplier: supplier2
Supplier.reset_counters!
supplier1.orders_in_process_count.should == 2
supplier1.orders_delivered_count.should == 7
supplier2.orders_in_process_count.should == 3
supplier1.orders_placed_count.should == 2
supplier1.orders_in_process_count.should == 7
supplier2.orders_placed_count.should == 3
end
it 'cleans counter values if orders are no longer available' do
# this spec should run on the couchbase database
Qwaiter::Counter.connection = $cb
supplier = create :supplier
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_placed", 9
supplier.orders_placed_count.should == 9
Supplier.reset_counters!
supplier.orders_placed_count.should == 0
end
end
@@ -23,8 +33,8 @@ describe Supplier do
create_list :order, 5, :placed, supplier: supplier
create_list :order, 9, :active, supplier: supplier
supplier.reset_counters!
supplier.orders_in_process_count.should == 5
supplier.orders_delivered_count.should == 9
supplier.orders_placed_count.should == 5
supplier.orders_in_process_count.should == 9
end
end
@@ -83,10 +93,10 @@ describe Supplier do
end
describe '#decrement_orders_delivered_count!' do
it 'decreases orders_delivered' do
Qwaiter::Counter.set "supplier:#{supplier.id}:orders_delivered", 9
supplier.decrement_orders_delivered_count!.should == 8
describe '#decrement_orders_placed_count!' do
it 'decreases orders_placed' do
Qwaiter::Counter.set "supplier_counter:#{supplier.id}:orders_placed", 9
supplier.decrement_orders_placed_count!.should == 8
end
end