Files
openfoodnetwork/spec/models/exchange_spec.rb
2013-08-19 10:41:14 +10:00

73 lines
1.9 KiB
Ruby

require 'spec_helper'
describe Exchange do
it "should be valid when built from factory" do
build(:exchange).should be_valid
end
[:order_cycle, :sender, :receiver].each do |attr|
it "should not be valid without #{attr}" do
e = build(:exchange)
e.send("#{attr}=", nil)
e.should_not be_valid
end
end
it "should not be valid when sender and receiver pair are not unique for its order cycle" do
e1 = create(:exchange)
e2 = build(:exchange,
:order_cycle => e1.order_cycle, :sender => e1.sender, :receiver => e1.receiver)
e2.should_not be_valid
e2.receiver = create(:enterprise)
e2.should be_valid
e2.sender = e2.receiver
e2.receiver = e1.receiver
e2.should be_valid
end
it "has exchange variants" do
e = create(:exchange)
p = create(:product)
e.exchange_variants.create(:variant => p.master)
e.variants.count.should == 1
end
it "has exchange fees" do
e = create(:exchange)
f = create(:enterprise_fee)
e.exchange_fees.create(:enterprise_fee => f)
e.enterprise_fees.count.should == 1
end
describe "scopes" do
let(:supplier) { create(:supplier_enterprise) }
let(:coordinator) { create(:distributor_enterprise) }
let(:distributor) { create(:distributor_enterprise) }
let(:oc) { create(:simple_order_cycle, coordinator: coordinator) }
let!(:incoming_exchange) { oc.exchanges.create! sender: supplier, receiver: coordinator }
let!(:outgoing_exchange) { oc.exchanges.create! sender: coordinator, receiver: distributor }
it "finds incoming exchanges" do
Exchange.incoming.should == [incoming_exchange]
end
it "finds outgoing exchanges" do
Exchange.outgoing.should == [outgoing_exchange]
end
it "finds exchanges with a particular variant" do
v = create(:variant)
ex = create(:exchange)
ex.variants << v
Exchange.with_variant(v).should == [ex]
end
end
end