Files
mozo-backend/spec/models/supplier_spec.rb
T
2015-02-18 22:36:47 +01:00

133 lines
3.8 KiB
Ruby

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('asdf').should_not be_present
end
it 'returns employee_settings on for employee' do
supplier.add_employee employee
settings = supplier.employee_settings.for_employee(employee.id)
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.id)
settings.manager?.should be true
reloaded_supplier = Supplier.find(supplier.id)
settings = reloaded_supplier.employee_settings.for_employee(employee.id)
settings.manager?.should be true
end
end
end