From d9d3a4a645a4d627af279cc8ccc6d8972793bc87 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 7 Jul 2016 10:40:31 +1000 Subject: [PATCH] Set up producer filters on group producers page --- .../group_enterprises_controller.js.coffee | 3 ++ app/views/groups/show.html.haml | 2 +- spec/features/consumer/groups_spec.rb | 40 ++++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/darkswarm/controllers/group_enterprises_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/group_enterprises_controller.js.coffee index 13c1017386..567767be7b 100644 --- a/app/assets/javascripts/darkswarm/controllers/group_enterprises_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/group_enterprises_controller.js.coffee @@ -8,3 +8,6 @@ Darkswarm.controller "GroupEnterprisesCtrl", ($scope, Search, FilterSelectorsSer $scope.$watch "query", (query)-> Search.search query + + $scope.$watch "filtersActive", (value) -> + $scope.$broadcast 'filtersToggled' diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml index a21bdb7460..ef9e281155 100644 --- a/app/views/groups/show.html.haml +++ b/app/views/groups/show.html.haml @@ -67,7 +67,7 @@ .small-12.columns .active_table %producer.active_table_node.row.animate-repeat{id: "{{producer.path}}", - "ng-repeat" => "producer in filteredEnterprises = (group_producers | searchEnterprises:query | taxons:activeTaxons)", + "ng-repeat" => "producer in filteredEnterprises = (group_producers | searchEnterprises:query | taxons:activeTaxons | properties:activeProperties)", "ng-controller" => "GroupEnterpriseNodeCtrl", "ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !producer.active}", id: "{{producer.hash}}"} diff --git a/spec/features/consumer/groups_spec.rb b/spec/features/consumer/groups_spec.rb index 5ea96ac17e..039322b379 100644 --- a/spec/features/consumer/groups_spec.rb +++ b/spec/features/consumer/groups_spec.rb @@ -9,11 +9,49 @@ feature 'Groups', js: true do it "renders groups" do visit groups_path - page.should have_content group.name + expect(page).to have_content group.name end it "searches by URL" do visit groups_path(anchor: "/?query=xyzzy") expect(page).to have_content "No groups found" end + + describe "producers" do + describe "filtering by product property" do + let!(:producer1) { create(:supplier_enterprise) } + let!(:producer2) { create(:supplier_enterprise) } + + let!(:product1) { create(:simple_product, supplier: producer1) } + let!(:product2) { create(:simple_product, supplier: producer2) } + + before do + product1.set_property 'Organic', 'NASAA 12345' + product2.set_property 'Biodynamic', 'ABC123' + + producer1.set_producer_property 'Local', 'Victoria' + producer2.set_producer_property 'Fair Trade', 'FT123' + + group.enterprises << producer1 + group.enterprises << producer2 + + visit group_path(group, anchor: "/producers") + end + + it "filters" do + toggle_filters + + toggle_filter 'Organic' + + expect(page).to have_content producer1.name + expect(page).not_to have_content producer2.name + + toggle_filter 'Organic' + toggle_filter 'Fair Trade' + + expect(page).not_to have_content producer1.name + expect(page).to have_content producer2.name + end + end + end end