Fix and implement supplier counters
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -46,6 +46,12 @@ end
|
||||
|
||||
# NOT THREADSAFE!!!!!! but good enough for testing since the real couchbase flush is slowwwwww....
|
||||
Qwaiter::Counter.connection = InMemoryQCounter.new
|
||||
class Couchbase::View
|
||||
alias :old_initialize :initialize
|
||||
def initialize(bucket, endpoint, params = {})
|
||||
old_initialize(bucket, endpoint, params.merge(stale: false))
|
||||
end
|
||||
end
|
||||
|
||||
RSpec.configure do |config|
|
||||
# == Mock Framework
|
||||
@@ -100,6 +106,9 @@ RSpec.configure do |config|
|
||||
# examples within a transaction, remove the following line or assign false
|
||||
# instead of true.
|
||||
#config.use_transactional_fixtures = true
|
||||
config.before :suite do
|
||||
Qwaiter::Couchbase.load_design_docs!
|
||||
end
|
||||
|
||||
config.before :each do
|
||||
CouchPotato.couchrest_database.recreate!
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
class InMemoryQCounter
|
||||
STORE = {}
|
||||
|
||||
def get(key)
|
||||
def get(key, options = {})
|
||||
STORE[key]
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user