Merge pull request #3461 from fantasticfears/slug

FIX: category custom slug can't be set when generation method is none
This commit is contained in:
Sam 2015-05-15 14:59:35 +10:00
commit fdbcc31a9c
3 changed files with 15 additions and 5 deletions

View file

@ -215,7 +215,7 @@ SQL
if slug.present? if slug.present?
# santized custom slug # santized custom slug
self.slug = Slug.for(slug, '') self.slug = Slug.sanitize(slug)
errors.add(:slug, 'is already in use') if duplicate_slug? errors.add(:slug, 'is already in use') if duplicate_slug?
else else
# auto slug # auto slug

View file

@ -13,6 +13,10 @@ module Slug
slug.blank? ? default : slug slug.blank? ? default : slug
end end
def self.sanitize(string)
self.encoded_generator(string)
end
private private
def self.ascii_generator(string) def self.ascii_generator(string)

View file

@ -232,15 +232,21 @@ describe CategoriesController do
it 'accepts valid custom slug' do it 'accepts valid custom slug' do
xhr :put, :update_slug, category_id: @category.id, slug: 'valid-slug' xhr :put, :update_slug, category_id: @category.id, slug: 'valid-slug'
expect(response).to be_success expect(response).to be_success
category = Category.find(@category.id) expect(@category.reload.slug).to eq('valid-slug')
expect(category.slug).to eq('valid-slug')
end end
it 'accepts not well formed custom slug' do it 'accepts not well formed custom slug' do
xhr :put, :update_slug, category_id: @category.id, slug: ' valid slug' xhr :put, :update_slug, category_id: @category.id, slug: ' valid slug'
expect(response).to be_success expect(response).to be_success
category = Category.find(@category.id) expect(@category.reload.slug).to eq('valid-slug')
expect(category.slug).to eq('valid-slug') end
it 'accepts and sanitize custom slug when the slug generation method is not english' do
SiteSetting.slug_generation_method = 'none'
xhr :put, :update_slug, category_id: @category.id, slug: ' another !_ slug @'
expect(response).to be_success
expect(@category.reload.slug).to eq('another-slug')
SiteSetting.slug_generation_method = 'ascii'
end end
it 'rejects invalid custom slug' do it 'rejects invalid custom slug' do