WIP: Adding basic UI for applying hard filtering to BPE

This commit is contained in:
Rob H
2014-01-04 19:21:10 +08:00
parent 7ef358a476
commit a6d7044dfd
5 changed files with 91 additions and 15 deletions

View File

@@ -608,6 +608,34 @@ feature %q{
page.should have_text "1"
end
end
describe "using filtering controls" do
it "displays basic filtering controls" do
FactoryGirl.create(:simple_product)
login_to_admin_section
visit '/admin/products/bulk_edit'
page.should have_select "filter_property", :with_options => ["Supplier", "Name"]
page.should have_select "filter_predicate", :with_options => ["Equals", "Contains"]
page.should have_field "filter_value"
end
it "adds a new filter when the 'Apply Filter' button is clicked" do
FactoryGirl.create(:simple_product, :name => "Product1")
FactoryGirl.create(:simple_product, :name => "Product2")
login_to_admin_section
visit '/admin/products/bulk_edit'
select "Name", :from => "filter_property"
select "Equals", :from => "filter_predicate"
fill_in "filter_value", :with => "Product1"
click_button "Apply Filter"
page.should have_text "Name Equals Product1"
end
end
end
context "as an enterprise manager" do

View File

@@ -902,25 +902,25 @@ describe "AdminBulkProductsCtrl", ->
describe "filtering products", ->
describe "adding a filter to the filter list", ->
it "adds objects sent to addFilter() to $scope.currentFilters", ->
filterObject1 = {property: "name", ransack_predicate: "eq", value: "Product1"}
filterObject2 = {property: "name", ransack_predicate: "eq", value: "Product2"}
filterObject1 = {property: scope.filterableColumns[0], predicate: scope.filterTypes[0], value: "Product1"}
filterObject2 = {property: scope.filterableColumns[0], predicate: scope.filterTypes[0], value: "Product2"}
scope.addFilter(filterObject1)
scope.addFilter(filterObject2)
expect(scope.currentFilters).toEqual [filterObject1, filterObject2]
it "ignores objects sent to addFilter() which do not contain a 'property' with a corresponding key in $scope.columns", ->
filterObject1 = {property: Object.keys(scope.columns)[0], ransack_predicate: "eq", value: "value1"}
filterObject2 = {property: Object.keys(scope.columns)[2], ransack_predicate: "eq", value: "value2"}
filterObject3 = {property: "some_random_property", ransack_predicate: "eq", value: "value3"}
it "ignores objects sent to addFilter() which do not contain a 'property' with a corresponding key in filterableColumns", ->
filterObject1 = {property: scope.filterableColumns[0], predicate: scope.filterTypes[0], value: "value1"}
filterObject2 = {property: scope.filterableColumns[1], predicate: scope.filterTypes[0], value: "value2"}
filterObject3 = {property: "some_random_property", predicate: scope.filterTypes[0], value: "value3"}
scope.addFilter(filterObject1)
scope.addFilter(filterObject2)
scope.addFilter(filterObject3)
expect(scope.currentFilters).toEqual [filterObject1, filterObject2]
it "ignores objects sent to addFilter() which do not contain a query with a corresponding key in ", ->
filterObject1 = {property: Object.keys(scope.columns)[0], ransack_predicate: "eq", value: "value1"}
filterObject2 = {property: Object.keys(scope.columns)[2], ransack_predicate: "eq", value: "value2"}
filterObject3 = {property: Object.keys(scope.columns)[4], ransack_predicate: "something", value: "value3"}
it "ignores objects sent to addFilter() which do not contain a query with a corresponding key in filterTypes", ->
filterObject1 = {property: scope.filterableColumns[0], predicate: scope.filterTypes[0], value: "value1"}
filterObject2 = {property: scope.filterableColumns[0], predicate: scope.filterTypes[1], value: "value2"}
filterObject3 = {property: scope.filterableColumns[0], predicate: "something", value: "value3"}
scope.addFilter(filterObject1)
scope.addFilter(filterObject2)
scope.addFilter(filterObject3)