Files
openfoodnetwork/spec/models/enterprises_spec.rb

76 lines
2.4 KiB
Ruby

require 'spec_helper'
describe Enterprise do
describe "associations" do
it { should have_many(:supplied_products) }
it { should have_many(:distributed_orders) }
it { should belong_to(:address) }
it { should have_many(:product_distributions) }
end
describe "validations" do
it { should validate_presence_of(:name) }
end
it "should default address country to system country" do
subject.address.country.should == Spree::Country.find_by_id(Spree::Config[:default_country_id])
end
describe "scopes" do
describe "active_distributors" do
it "finds active distributors by product distributions" do
d = create(:distributor_enterprise)
create(:product, :distributors => [d])
Enterprise.active_distributors.should == [d]
end
it "finds active distributors by order cycles" do
s = create(:supplier_enterprise)
d = create(:distributor_enterprise)
p = create(:product)
create(:simple_order_cycle, suppliers: [s], distributors: [d], variants: [p.master])
Enterprise.active_distributors.should == [d]
end
it "doesn't show distributors of deleted products"
it "doesn't show distributors of unavailable products"
it "doesn't show distributors of out of stock products"
it "doesn't show distributors from inactive order cycles"
end
it "returns distributors with products in stock" do
d1 = create(:distributor_enterprise)
d2 = create(:distributor_enterprise)
d3 = create(:distributor_enterprise)
d4 = create(:distributor_enterprise)
create(:product, :distributors => [d1, d2], :on_hand => 5)
create(:product, :distributors => [d1], :on_hand => 5)
create(:product, :distributors => [d3], :on_hand => 0)
Enterprise.with_distributed_active_products_on_hand.sort.should == [d1, d2]
end
end
context "has_supplied_products_on_hand?" do
before :each do
@supplier = create(:supplier_enterprise)
end
it "returns false when no products" do
@supplier.should_not have_supplied_products_on_hand
end
it "returns false when the product is out of stock" do
create(:product, :supplier => @supplier, :on_hand => 0)
@supplier.should_not have_supplied_products_on_hand
end
it "returns true when the product is in stock" do
create(:product, :supplier => @supplier, :on_hand => 1)
@supplier.should have_supplied_products_on_hand
end
end
end