add validation to tag name (#4194)
This commit is contained in:
		
							parent
							
								
									27b2355738
								
							
						
					
					
						commit
						a49be27145
					
				
					 2 changed files with 21 additions and 2 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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 } | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue