mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Adding producers to home and distributors to producers
This commit is contained in:
@@ -136,6 +136,14 @@ class Enterprise < ActiveRecord::Base
|
||||
", self.id, self.id)
|
||||
end
|
||||
|
||||
def distributors
|
||||
self.relatives.is_distributor
|
||||
end
|
||||
|
||||
def suppliers
|
||||
self.relatives.is_supplier
|
||||
end
|
||||
|
||||
def distributed_variants
|
||||
Spree::Variant.joins(:product).merge(Spree::Product.in_distributor(self)).select('spree_variants.*')
|
||||
end
|
||||
@@ -149,11 +157,17 @@ class Enterprise < ActiveRecord::Base
|
||||
end
|
||||
|
||||
# Return all taxons for all distributed products
|
||||
def taxons
|
||||
def distributed_taxons
|
||||
Spree::Product.in_distributor(self).map do |p|
|
||||
p.taxons
|
||||
end.flatten.uniq
|
||||
end
|
||||
# Return all taxons for all supplied products
|
||||
def supplied_taxons
|
||||
Spree::Product.in_supplier(self).map do |p|
|
||||
p.taxons
|
||||
end.flatten.uniq
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
# DON'T USE DIRECTLY - for inheritance
|
||||
attributes :name, :id
|
||||
|
||||
child :taxons => :taxons do
|
||||
attributes :name, :id
|
||||
end
|
||||
attributes :name, :id, :description
|
||||
|
||||
child :address do
|
||||
extends "json/partials/address"
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
collection Enterprise.visible.is_distributor
|
||||
extends 'json/enterprises'
|
||||
|
||||
child distributed_taxons: :taxons do
|
||||
attributes :name, :id
|
||||
end
|
||||
|
||||
child producers: :producers do
|
||||
attributes :name, :id
|
||||
node :path do |producer|
|
||||
producer_path(producer_path)
|
||||
end
|
||||
end
|
||||
|
||||
node :pickup do |hub|
|
||||
not hub.shipping_methods.where(:require_ship_address => false).empty?
|
||||
end
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
collection @producers
|
||||
extends 'json/enterprises'
|
||||
|
||||
child supplied_taxons: :taxons do
|
||||
attributes :name, :id
|
||||
end
|
||||
|
||||
child distributors: :distributors do
|
||||
attributes :name, :id
|
||||
node :path do |distributor|
|
||||
distributor_path(distributor)
|
||||
end
|
||||
end
|
||||
|
||||
node :path do |producer|
|
||||
producer_path(producer)
|
||||
end
|
||||
|
||||
@@ -3,14 +3,17 @@
|
||||
%strong Shop for
|
||||
%p.trans-sentence
|
||||
{{ producer.taxons | printArrayOfObjects }}
|
||||
.columns.small-8
|
||||
About Us
|
||||
.columns.small-4
|
||||
%strong About us
|
||||
{{ producer.description }}
|
||||
.columns.small-4
|
||||
%strong Our distributors
|
||||
|
||||
.row.active_table_row.link{"ng-show" => "open()", "ng-repeat" => "hub in producer.hubs"}
|
||||
.columns.small-11
|
||||
%a{"bo-href" => "hub.path"}
|
||||
Shop at
|
||||
%strong {{ hub.name }}
|
||||
%strong {{ producer.name }}
|
||||
.columns.small-1.text-right
|
||||
%a{"bo-href" => "hub.path"}
|
||||
%i.fi-arrow-right
|
||||
|
||||
@@ -28,14 +28,28 @@ describe Enterprise do
|
||||
end
|
||||
|
||||
describe "relationships to other enterprises" do
|
||||
it "finds relatives" do
|
||||
e, p, c = create(:enterprise), create(:enterprise), create(:enterprise)
|
||||
|
||||
let(:e) { create(:distributor_enterprise) }
|
||||
let(:p) { create(:supplier_enterprise) }
|
||||
let(:c) { create(:distributor_enterprise) }
|
||||
before do
|
||||
EnterpriseRelationship.create! parent_id: p.id, child_id: e.id
|
||||
EnterpriseRelationship.create! parent_id: e.id, child_id: c.id
|
||||
|
||||
end
|
||||
it "finds relatives" do
|
||||
e.relatives.sort.should == [p, c].sort
|
||||
end
|
||||
|
||||
it "scopes relatives to distributors" do
|
||||
e.should_receive(:relatives).and_return(relatives = [])
|
||||
relatives.should_receive(:is_distributor)
|
||||
e.distributors
|
||||
end
|
||||
|
||||
it "scopes relatives to producers" do
|
||||
e.should_receive(:relatives).and_return(relatives = [])
|
||||
relatives.should_receive(:is_supplier)
|
||||
e.suppliers
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -405,14 +419,20 @@ describe Enterprise do
|
||||
|
||||
describe "taxons" do
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:supplier) { create(:supplier_enterprise) }
|
||||
let(:taxon1) { create(:taxon) }
|
||||
let(:taxon2) { create(:taxon) }
|
||||
let(:product1) { create(:simple_product, taxons: [taxon1]) }
|
||||
let(:product2) { create(:simple_product, taxons: [taxon1, taxon2]) }
|
||||
|
||||
it "gets all taxons of all products" do
|
||||
it "gets all taxons of all distributed products" do
|
||||
Spree::Product.stub(:in_distributor).and_return [product1, product2]
|
||||
distributor.taxons.should == [taxon1, taxon2]
|
||||
distributor.distributed_taxons.should == [taxon1, taxon2]
|
||||
end
|
||||
|
||||
it "gets all taxons of all supplied products" do
|
||||
Spree::Product.stub(:in_supplier).and_return [product1, product2]
|
||||
supplier.supplied_taxons.should == [taxon1, taxon2]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user