Variants controller #search filters by distribution

This commit is contained in:
Rohan Mitchell
2014-07-16 10:31:12 +10:00
parent f18141c9bb
commit 42b951c972
2 changed files with 47 additions and 0 deletions

View File

@@ -1,6 +1,22 @@
Spree::Admin::VariantsController.class_eval do
helper 'spree/products'
def search
search_params = { :product_name_cont => params[:q], :sku_cont => params[:q] }
@variants = Spree::Variant.ransack(search_params.merge(:m => 'or')).result
if params[:distributor_id].present?
distributor = Enterprise.find params[:distributor_id]
@variants = @variants.in_distributor(distributor)
end
if params[:order_cycle_id].present?
order_cycle = OrderCycle.find params[:order_cycle_id]
@variants = @variants.in_order_cycle(order_cycle)
end
end
def destroy
@variant = Spree::Variant.find(params[:id])
@variant.delete # This line changed, as well as removal of following conditional

View File

@@ -0,0 +1,31 @@
require 'spec_helper'
module Spree
module Admin
describe VariantsController do
before { login_as_admin }
describe "search action" do
let!(:p1) { create(:simple_product, name: 'Product 1') }
let!(:p2) { create(:simple_product, name: 'Product 2') }
let!(:d) { create(:distributor_enterprise) }
let!(:oc) { create(:simple_order_cycle, distributors: [d], variants: [p1.master]) }
it "filters by distributor" do
spree_get :search, q: 'Prod', distributor_id: d.id.to_s
assigns(:variants).should == [p1.master]
end
it "filters by order cycle" do
spree_get :search, q: 'Prod', order_cycle_id: oc.id.to_s
assigns(:variants).should == [p1.master]
end
it "does not filter when no distributor or order cycle is specified" do
spree_get :search, q: 'Prod'
assigns(:variants).sort.should == [p1.master, p2.master].sort
end
end
end
end
end