Add couchbase with modifications, formalize broadcaster and make testable and some other stuff
This commit is contained in:
@@ -122,4 +122,36 @@ describe List do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#place_order' do
|
||||
|
||||
it 'returns an order object' do
|
||||
list.place_order(user, product.id => 7).should be_a Order
|
||||
end
|
||||
|
||||
it 'creates an order' do
|
||||
expect{ list.place_order(user, product.id => 7) }.to change{ Order.count }.by(1)
|
||||
end
|
||||
|
||||
describe 'broadcasting' do
|
||||
it 'broadcasts to the user and the supplier the active order counter' do
|
||||
list.place_order(user, product.id => 7)
|
||||
|
||||
expect{
|
||||
list.place_order(user, product.id => 3)
|
||||
}.to broadcast_to_user(user.id).message('orders_in_process_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)
|
||||
end
|
||||
end
|
||||
|
||||
it 'sets the list price as kind of caching' do
|
||||
list.place_order(user, product.id => 7)
|
||||
list.reload
|
||||
list.price.should == 3
|
||||
end
|
||||
|
||||
describe 'product order creation'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -37,4 +37,64 @@ describe Order do
|
||||
it 'paginates'
|
||||
end
|
||||
|
||||
describe '#is_being_processed!' do
|
||||
describe 'broadcasting' do
|
||||
|
||||
it 'broadcasts order info to the user' do
|
||||
expect{ order.is_being_processed! }.to broadcast_to_user(user.id).message( 'order_being_processed' ).with(id: order.id, list_id: list.id)
|
||||
end
|
||||
|
||||
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
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
it 'broadcasts order info to the supplier' do
|
||||
expect{ order.is_being_processed! }.to broadcast_to_supplier(supplier.id).message( 'order_being_processed' ).with(id: order.id, list_id: list.id)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe '#is_delivered!' do
|
||||
describe 'broadcasting' 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
|
||||
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)
|
||||
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)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,62 +1,67 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Supplier do
|
||||
before :each do
|
||||
@supplier = build :supplier
|
||||
end
|
||||
let(:supplier){ build :supplier }
|
||||
# property open
|
||||
describe :open do
|
||||
it 'should be false by default' do
|
||||
@supplier.open.should == false
|
||||
supplier.open.should == false
|
||||
end
|
||||
|
||||
it 'should not be open? by default' do
|
||||
@supplier.open?.should == false
|
||||
supplier.open?.should == false
|
||||
end
|
||||
|
||||
it 'should be closed? by default' do
|
||||
@supplier.closed?.should == true
|
||||
supplier.closed?.should == true
|
||||
end
|
||||
|
||||
describe :mark_as_open! do
|
||||
before :each do
|
||||
@supplier.mark_as_open!
|
||||
supplier.mark_as_open!
|
||||
end
|
||||
it 'should be persisted in the database' do
|
||||
@supplier.reload
|
||||
@supplier.open.should == true
|
||||
supplier.reload
|
||||
supplier.open.should == true
|
||||
end
|
||||
|
||||
it 'should be open?' do
|
||||
@supplier.open?.should == true
|
||||
supplier.open?.should == true
|
||||
end
|
||||
|
||||
it 'should not be closed?' do
|
||||
@supplier.closed?.should == false
|
||||
supplier.closed?.should == false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe :mark_as_closed! do
|
||||
before :each do
|
||||
@supplier.mark_as_open!
|
||||
@supplier.mark_as_closed!
|
||||
supplier.mark_as_open!
|
||||
supplier.mark_as_closed!
|
||||
end
|
||||
|
||||
it 'should be persisted in the database' do
|
||||
@supplier.reload
|
||||
@supplier.open.should == false
|
||||
supplier.reload
|
||||
supplier.open.should == false
|
||||
end
|
||||
|
||||
it 'should be open?' do
|
||||
@supplier.open?.should == false
|
||||
supplier.open?.should == false
|
||||
end
|
||||
|
||||
it 'should not be closed?' do
|
||||
@supplier.closed?.should == true
|
||||
supplier.closed?.should == true
|
||||
end
|
||||
end
|
||||
|
||||
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
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user