mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
73 lines
1.9 KiB
Ruby
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
|