mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-11 23:17:48 +00:00
Tests for the taxon filtering
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
Darkswarm.directive "shippingTypeSelector", ->
|
||||
restrict: 'E'
|
||||
templateUrl: 'shipping_type_selector.html'
|
||||
link: (scope, elem, attr)->
|
||||
scope.shippingTypes =
|
||||
pickup: false
|
||||
delivery: false
|
||||
@@ -1,6 +1,8 @@
|
||||
Darkswarm.directive "taxonSelector", (TaxonSelector) ->
|
||||
restrict: 'E'
|
||||
scope: {}
|
||||
scope:
|
||||
enterprises: "="
|
||||
templateUrl: "taxon_selector.html"
|
||||
link: (scope, elem, attr)->
|
||||
scope.TaxonSelector = TaxonSelector
|
||||
TaxonSelector.collectTaxons scope.enterprises
|
||||
|
||||
@@ -3,10 +3,9 @@ Darkswarm.filter 'taxons', (Matcher)->
|
||||
(objects, ids) ->
|
||||
objects ||= []
|
||||
ids ?= []
|
||||
console.log ids
|
||||
if ids.length == 0
|
||||
objects
|
||||
else
|
||||
objects.filter (obj)->
|
||||
obj.primary_taxon?.id in ids || obj.taxons.some (taxon)->
|
||||
obj.primary_taxon?.id in ids || (obj.taxons.concat obj.supplied_taxons).some (taxon)->
|
||||
taxon.id in ids
|
||||
|
||||
@@ -18,3 +18,4 @@ Darkswarm.factory 'Enterprises', (enterprises, CurrentHub, Taxons, Dereferencer)
|
||||
dereferenceTaxons: ->
|
||||
for enterprise in @enterprises
|
||||
Dereferencer.dereference enterprise.taxons, Taxons.taxons_by_id
|
||||
Dereferencer.dereference enterprise.supplied_taxons, Taxons.taxons_by_id
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
Darkswarm.factory 'TaxonSelector', ->
|
||||
new class TaxonSelector
|
||||
selectors: []
|
||||
# Collect all taxons on the supplied enterprises
|
||||
collectTaxons: (enterprises)->
|
||||
taxons = {}
|
||||
for enterprise in enterprises
|
||||
for taxon in (enterprise.taxons.concat enterprise.supplied_taxons)
|
||||
taxons[taxon.id] = taxon
|
||||
for id, taxon of taxons
|
||||
@selectors.push
|
||||
active: false
|
||||
taxon: taxon
|
||||
|
||||
active: ->
|
||||
@selectors.filter (selector)->
|
||||
selector.active
|
||||
.map (selector)->
|
||||
selector.taxon.id
|
||||
@@ -1,14 +0,0 @@
|
||||
Darkswarm.factory 'TaxonSelector', (Taxons)->
|
||||
new class TaxonSelector
|
||||
selectors: []
|
||||
constructor: ->
|
||||
for taxon in Taxons.taxons
|
||||
@selectors.push
|
||||
active: false
|
||||
taxon: taxon
|
||||
|
||||
active: ->
|
||||
@selectors.filter (selector)->
|
||||
selector.active
|
||||
.map (selector)->
|
||||
selector.taxon.id
|
||||
@@ -0,0 +1,7 @@
|
||||
%ul.small-block-grid-4
|
||||
%li{"ng-class" => "{active: shippingTypes['delivery']}"}
|
||||
%a{"ng-click" => "shippingTypes['delivery'] = !shippingTypes['delivery']"}
|
||||
Delivery
|
||||
%li{"ng-class" => "{active: shippingTypes['pickup']}"}
|
||||
%a{"ng-click" => "shippingTypes['pickup'] = !shippingTypes['pickup']"}
|
||||
Pickup
|
||||
@@ -16,4 +16,7 @@
|
||||
Something
|
||||
.row
|
||||
.small-12.large-6.columns
|
||||
%taxon-selector
|
||||
%taxon-selector{enterprises: "Producers.visible"}
|
||||
|
||||
.small-12.large-6.columns
|
||||
%shipping-type-selector
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
.active_table
|
||||
%producer.active_table_node.row.animate-repeat{id: "{{producer.path}}",
|
||||
"scroll-after-load" => true,
|
||||
"ng-repeat" => "producer in filteredProducers = (Producers.visible | filterProducers:query | taxons:TaxonSelector.active())",
|
||||
"ng-repeat" => "producer in filteredProducers = (Producers.visible | filterProducers:query | taxons:TaxonSelector.active() | shipping:shippingTypes)",
|
||||
"ng-controller" => "ProducerNodeCtrl",
|
||||
"ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !producer.active}",
|
||||
id: "{{producer.hash}}"}
|
||||
|
||||
@@ -28,3 +28,6 @@ describe 'filtering by shipping method', ->
|
||||
|
||||
it "filters to none", ->
|
||||
expect(filterByShippingMethod(objects, {pickup: false, delivery: false})).toBe objects
|
||||
|
||||
it "filters to none with empty", ->
|
||||
expect(filterByShippingMethod(objects, {})).toBe objects
|
||||
|
||||
@@ -3,6 +3,7 @@ describe 'filtering by taxons', ->
|
||||
objects = [
|
||||
{
|
||||
taxons: []
|
||||
supplied_taxons: []
|
||||
primary_taxon:
|
||||
name: "frogs"
|
||||
id: 1
|
||||
@@ -12,6 +13,7 @@ describe 'filtering by taxons', ->
|
||||
{name: "kittens", id: 2}
|
||||
{name: "puppies", id: 3}
|
||||
]
|
||||
supplied_taxons: []
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user