mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-13 04:00:21 +00:00
Merge pull request #7712 from guidoDutra/1861-enable-shopfront-sorting-by-producer
Enable sorting by producer in shopfront
This commit is contained in:
@@ -188,6 +188,41 @@ describe Enterprise do
|
||||
expect(enterprise).to be_invalid
|
||||
end
|
||||
end
|
||||
|
||||
describe "preferred_shopfront_producer_order" do
|
||||
it "empty strings are valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "a single integer is valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "11")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "comma delimited integers are valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "1,2,3")
|
||||
expect(enterprise).to be_valid
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "1,22,333")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "commas at the beginning and end are disallowed" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: ",1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "1,2,3,")
|
||||
expect(enterprise).to be_invalid
|
||||
end
|
||||
|
||||
it "any other characters are invalid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: "a1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: ".1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_producer_order: " 1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "callbacks" do
|
||||
|
||||
@@ -12,10 +12,12 @@ describe ProductsRenderer do
|
||||
describe "sorting" do
|
||||
let(:t1) { create(:taxon) }
|
||||
let(:t2) { create(:taxon) }
|
||||
let!(:p1) { create(:product, name: "abc", primary_taxon_id: t2.id) }
|
||||
let!(:p2) { create(:product, name: "def", primary_taxon_id: t1.id) }
|
||||
let!(:p3) { create(:product, name: "ghi", primary_taxon_id: t2.id) }
|
||||
let!(:p4) { create(:product, name: "jkl", primary_taxon_id: t1.id) }
|
||||
let(:s1) { create(:supplier_enterprise) }
|
||||
let(:s2) { create(:supplier_enterprise) }
|
||||
let!(:p1) { create(:product, name: "abc", primary_taxon_id: t2.id, supplier_id: s1.id) }
|
||||
let!(:p2) { create(:product, name: "def", primary_taxon_id: t1.id, supplier_id: s2.id) }
|
||||
let!(:p3) { create(:product, name: "ghi", primary_taxon_id: t2.id, supplier_id: s1.id) }
|
||||
let!(:p4) { create(:product, name: "jkl", primary_taxon_id: t1.id, supplier_id: s2.id) }
|
||||
|
||||
before do
|
||||
exchange.variants << p1.variants.first
|
||||
@@ -30,6 +32,13 @@ describe ProductsRenderer do
|
||||
expect(products).to eq([p2, p4, p1, p3])
|
||||
end
|
||||
|
||||
it "sorts products by the distributor's preferred producer list" do
|
||||
allow(distributor).to receive(:preferred_shopfront_product_sorting_method) { "by_producer" }
|
||||
allow(distributor).to receive(:preferred_shopfront_producer_order) { "#{s2.id},#{s1.id}" }
|
||||
products = products_renderer.send(:products)
|
||||
expect(products).to eq([p2, p4, p1, p3])
|
||||
end
|
||||
|
||||
it "alphabetizes products by name when taxon list is not set" do
|
||||
allow(distributor).to receive(:preferred_shopfront_taxon_order) { "" }
|
||||
products = products_renderer.send(:products)
|
||||
|
||||
Reference in New Issue
Block a user