forked from treehouse/mastodon
add validation to tag name (#4194)
parent
27b2355738
commit
a49be27145
|
@ -12,9 +12,10 @@
|
||||||
class Tag < ApplicationRecord
|
class Tag < ApplicationRecord
|
||||||
has_and_belongs_to_many :statuses
|
has_and_belongs_to_many :statuses
|
||||||
|
|
||||||
HASHTAG_RE = /(?:^|[^\/\)\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i
|
HASHTAG_NAME_RE = '[[:word:]_]*[[:alpha:]_][[:word:]_]*'
|
||||||
|
HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i
|
||||||
|
|
||||||
validates :name, presence: true, uniqueness: true
|
validates :name, presence: true, uniqueness: true, format: { with: /\A#{HASHTAG_NAME_RE}\z/i }
|
||||||
|
|
||||||
def to_param
|
def to_param
|
||||||
name
|
name
|
||||||
|
|
|
@ -1,6 +1,24 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Tag, type: :model do
|
RSpec.describe Tag, type: :model do
|
||||||
|
describe 'validations' do
|
||||||
|
it 'invalid with #' do
|
||||||
|
expect(Tag.new(name: '#hello_world')).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'invalid with .' do
|
||||||
|
expect(Tag.new(name: '.abcdef123')).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'invalid with spaces' do
|
||||||
|
expect(Tag.new(name: 'hello world')).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'valid with aesthetic' do
|
||||||
|
expect(Tag.new(name: 'aesthetic')).to be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'HASHTAG_RE' do
|
describe 'HASHTAG_RE' do
|
||||||
subject { Tag::HASHTAG_RE }
|
subject { Tag::HASHTAG_RE }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue