logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: a49be27145a858a51e1b9104b0ebc5f63a03b81b
parent: 27b2355738482a2e470281136bfe902ad6c78db8
Author: masarakki <masaki182@gmail.com>
Date:   Fri, 14 Jul 2017 18:02:49 +0900

add validation to tag name (#4194)


Diffstat:

Mapp/models/tag.rb5+++--
Mspec/models/tag_spec.rb18++++++++++++++++++
2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/app/models/tag.rb b/app/models/tag.rb @@ -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 diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb @@ -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 }