Adding action to check uniquness of enterprise permalink against existing routes

This commit is contained in:
Rob Harrington
2015-01-14 12:16:24 +11:00
parent 9f0aeb5adf
commit e2268e53bb
3 changed files with 36 additions and 1 deletions

View File

@@ -1,7 +1,7 @@
module Admin
class EnterprisesController < ResourceController
before_filter :load_enterprise_set, :only => :index
before_filter :load_countries, :except => :index
before_filter :load_countries, :except => [:index, :set_sells, :check_permalink]
before_filter :load_methods_and_fees, :only => [:new, :edit, :update, :create]
before_filter :load_taxons, :only => [:new, :edit, :update, :create]
before_filter :check_can_change_sells, only: :update
@@ -53,6 +53,18 @@ module Admin
end
end
def check_permalink
path = Rails.application.routes.recognize_path( "/#{ params[:permalink].to_s }" )
if path && path[:controller] == "cms_content"
respond_to do |format|
format.js { render nothing: true, status: 200 }
end
else
respond_to do |format|
format.js { render nothing: true, status: 409 }
end
end
end
protected

View File

@@ -46,6 +46,7 @@ Openfoodnetwork::Application.routes.draw do
collection do
get :for_order_cycle
post :bulk_update, as: :bulk_update
get :check_permalink
end
member do

View File

@@ -282,5 +282,27 @@ module Admin
end
end
end
describe "checking permalink suitability" do
# let(:enterprise) { create(:enterprise, permalink: 'enterprise_permalink') }
before do
controller.stub spree_current_user: admin_user
end
it "responds with status of 200 when the route does not exist" do
spree_get :check_permalink, { permalink: 'some_nonexistent_route', format: :js }
expect(response.status).to be 200
end
it "responds with status of 409 when the permalink matches an existing route" do
# spree_get :check_permalink, { permalink: 'enterprise_permalink', format: :js }
# expect(response.status).to be 409
spree_get :check_permalink, { permalink: 'map', format: :js }
expect(response.status).to be 409
spree_get :check_permalink, { permalink: '', format: :js }
expect(response.status).to be 409
end
end
end
end