require 'spec_helper' describe Supplier do let(:supplier){ build :supplier } describe '.reset_counters!' do it 'sets the counters to the right values' do supplier1 = create :supplier supplier2 = create :supplier create_list :order, 2, :placed, supplier: supplier1 create_list :order, 7, :active, supplier: supplier1 create_list :order, 3, :placed, supplier: supplier2 Supplier.reset_counters! 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', broken: defined?($cb) do # old_connection = Qwaiter::Counter.connection # # 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! # sleep 1 # supplier.orders_placed_count.should == 0 # Qwaiter::Counter.connection = old_connection # end end describe '#reset_counters!' do it 'sets the counters to the right values' do supplier = create :supplier create_list :order, 5, :placed, supplier: supplier create_list :order, 9, :active, supplier: supplier supplier.reset_counters! supplier.orders_placed_count.should == 5 supplier.orders_in_process_count.should == 9 end end # property open describe :open do it 'should be false by default' do supplier.open.should == false end it 'should not be open? by default' do supplier.open?.should == false end it 'should be closed? by default' do supplier.closed?.should == true end describe :mark_as_open! do before :each do supplier.mark_as_open! end it 'should be persisted in the database' do supplier.reload supplier.open.should == true end it 'should be open?' do supplier.open?.should == true end it 'should not be closed?' do supplier.closed?.should == false end end describe :mark_as_closed! do before :each do supplier.mark_as_open! supplier.mark_as_closed! end it 'should be persisted in the database' do supplier.reload supplier.open.should == false end it 'should be open?' do supplier.open?.should == false end it 'should not be closed?' do supplier.closed?.should == true end end end 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 describe '#employee_settings' do let(:employee){ create :employee } it 'is initialized by default' do supplier.employee_settings.should be_a SupplierEmployeesSettings end it 'returns null object without employee' do supplier.employee_settings.for_employee(nil).should_not be_present end it 'returns employee_settings on for employee' do supplier.add_employee employee settings = supplier.employee_settings.for_employee(employee) settings.should be_present settings.manager?.should be false end it 'indicates a manager when specified as such and is persisted' do supplier.add_manager employee settings = supplier.employee_settings.for_employee(employee) settings.manager?.should be true reloaded_supplier = Supplier.find(supplier.id) settings = reloaded_supplier.employee_settings.for_employee(employee) settings.manager?.should be true end end end