diff --git a/app/models/exchange.rb b/app/models/exchange.rb index 243a311bcc..122586ba96 100644 --- a/app/models/exchange.rb +++ b/app/models/exchange.rb @@ -11,7 +11,7 @@ class Exchange < ActiveRecord::Base has_many :enterprise_fees, :through => :exchange_fees validates_presence_of :order_cycle, :sender, :receiver - validates_uniqueness_of :sender_id, :scope => [:order_cycle_id, :receiver_id] + validates_uniqueness_of :sender_id, :scope => [:order_cycle_id, :receiver_id, :incoming] accepts_nested_attributes_for :variants diff --git a/spec/models/exchange_spec.rb b/spec/models/exchange_spec.rb index 403fceba87..9614a4d357 100644 --- a/spec/models/exchange_spec.rb +++ b/spec/models/exchange_spec.rb @@ -13,13 +13,17 @@ describe Exchange do end end - it "should not be valid when sender and receiver pair are not unique for its order cycle" do + it "should not be valid when (sender, receiver, direction) set 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) + :order_cycle => e1.order_cycle, :sender => e1.sender, :receiver => e1.receiver, :incoming => e1.incoming) e2.should_not be_valid + e2.incoming = !e2.incoming + e2.should be_valid + e2.incoming = !e2.incoming + e2.receiver = create(:enterprise) e2.should be_valid