FEATURE: add slug geneartion options

This commit is contained in:
Erick Guan
2015-04-13 22:50:41 +08:00
committed by fantasticfears
parent 2344aa2fdd
commit b772ff6e13
21 changed files with 349 additions and 122 deletions

View File

@ -12,28 +12,64 @@ describe Topic do
it { is_expected.to rate_limit }
context 'slug' do
let(:title) { "hello world topic" }
let(:slug) { "hello-world-slug" }
let(:slug) { "hello-world-topic" }
context 'encoded generator' do
before { SiteSetting.slug_generation_method = 'encoded' }
after { SiteSetting.slug_generation_method = 'ascii' }
it "returns a Slug for a title" do
Slug.expects(:for).with(title).returns(slug)
expect(Fabricate.build(:topic, title: title).slug).to eq(slug)
it "returns a Slug for a title" do
Slug.expects(:for).with(title, 'topic').returns(slug)
expect(Fabricate.build(:topic, title: title).slug).to eq(slug)
end
context 'for cjk characters' do
let(:title) { "熱帶風暴畫眉" }
let(:slug) { "%E7%86%B1%E5%B8%B6%E9%A2%A8%E6%9A%B4%E7%95%AB%E7%9C%89" }
it "returns encoded Slug for a title" do
Slug.expects(:for).with(title, 'topic').returns(slug)
expect(Fabricate.build(:topic, title: title).slug).to eq(slug)
end
end
context 'for numbers' do
let(:title) { "123456789" }
let(:slug) { "topic" }
it 'generates default slug' do
Slug.expects(:for).with(title, 'topic').returns("topic")
expect(Fabricate.build(:topic, title: title).slug).to eq("topic")
end
end
end
let(:chinese_title) { "习近平:中企承建港口电站等助斯里兰卡发展" }
let(:chinese_slug) { "xi-jin-ping-zhong-qi-cheng-jian-gang-kou-dian-zhan-deng-zhu-si-li-lan-qia-fa-zhan" }
context 'none generator' do
before { SiteSetting.slug_generation_method = 'none' }
after { SiteSetting.slug_generation_method = 'ascii' }
let(:title) { "熱帶風暴畫眉" }
let(:slug) { "topic" }
it "returns a symbolized slug for a chinese title" do
SiteSetting.default_locale = 'zh_CN'
expect(Fabricate.build(:topic, title: chinese_title).slug).to eq(chinese_slug)
it "returns a Slug for a title" do
Slug.expects(:for).with(title, 'topic').returns('topic')
expect(Fabricate.build(:topic, title: title).slug).to eq(slug)
end
end
it "returns 'topic' when the slug is empty (say, non-english chars)" do
Slug.expects(:for).with(title).returns("")
expect(Fabricate.build(:topic, title: title).slug).to eq("topic")
end
context '#ascii_generator' do
before { SiteSetting.slug_generation_method = 'ascii' }
it "returns a Slug for a title" do
Slug.expects(:for).with(title, 'topic').returns(slug)
expect(Fabricate.build(:topic, title: title).slug).to eq(slug)
end
context 'for cjk characters' do
let(:title) { "熱帶風暴畫眉" }
let(:slug) { 'topic' }
it "returns 'topic' when the slug is empty (say, non-latin characters)" do
Slug.expects(:for).with(title, 'topic').returns("topic")
expect(Fabricate.build(:topic, title: title).slug).to eq("topic")
end
end
end
end
context "updating a title to be shorter" do