diff --git a/app/models/spree/product_distribution.rb b/app/models/spree/product_distribution.rb index 2a73d464ca..cacdf496f0 100644 --- a/app/models/spree/product_distribution.rb +++ b/app/models/spree/product_distribution.rb @@ -5,5 +5,7 @@ module Spree belongs_to :product belongs_to :distributor belongs_to :shipping_method + + validates_uniqueness_of :product_id, :scope => :distributor_id end end diff --git a/spec/models/product_distribution_spec.rb b/spec/models/product_distribution_spec.rb new file mode 100644 index 0000000000..7827b32a8a --- /dev/null +++ b/spec/models/product_distribution_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe Spree::ProductDistribution do + it "is unique for scope [product, distributor]" do + pd1 = create(:product_distribution) + pd1.should be_valid + + new_product = create(:product) + new_distributor = create(:distributor) + + pd2 = build(:product_distribution, :product => pd1.product, :distributor => pd1.distributor) + pd2.should_not be_valid + + pd2 = build(:product_distribution, :product => pd1.product, :distributor => new_distributor) + pd2.should be_valid + + pd2 = build(:product_distribution, :product => new_product, :distributor => pd1.distributor) + pd2.should be_valid + + pd2 = build(:product_distribution, :product => new_product, :distributor => new_distributor) + pd2.should be_valid + end +end