mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Mixed case tagging (#6454)
- By default, behaviour is not changed: tags are made lowercase upon creation and edit. - If force_lowercase_tags is disabled, then mixed case tags are allowed. - Tags must remain case-insensitively unique. This is enforced by ActiveRecord and Postgres. - A migration is added to provide a `UNIQUE` index on `lower(name)`. Migration includes a safety to correct any current tags that do not meet the criteria. - A `where_name` scope is added to `models/tag.rb`, to allow easy case-insensitive lookups. This is used instead of `Tag.where(name: "blah")`. - URLs remain lowercase. Mixed case URLs are functional, but have the lowercase equivalent as the canonical.
This commit is contained in:
@@ -27,6 +27,12 @@ describe Tag do
|
||||
expect(event[:event_name]).to eq(:tag_created)
|
||||
expect(event[:params].first).to eq(subject)
|
||||
end
|
||||
|
||||
it 'prevents case-insensitive duplicates' do
|
||||
Fabricate.build(:tag, name: "hello").save!
|
||||
expect { Fabricate.build(:tag, name: "hElLo").save! }.to raise_error(ActiveRecord::RecordInvalid)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe 'destroy' do
|
||||
|
||||
Reference in New Issue
Block a user