Browse Source

add validation to tag name (#4194)

pull/4/head
masarakki 6 years ago
committed by Eugen Rochko
parent
commit
a49be27145
2 changed files with 21 additions and 2 deletions
  1. +3
    -2
      app/models/tag.rb
  2. +18
    -0
      spec/models/tag_spec.rb

+ 3
- 2
app/models/tag.rb View File

@ -12,9 +12,10 @@
class Tag < ApplicationRecord
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
name

+ 18
- 0
spec/models/tag_spec.rb View File

@ -1,6 +1,24 @@
require 'rails_helper'
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
subject { Tag::HASHTAG_RE }

Loading…
Cancel
Save