2013-05-22 21:52:12 -07:00
# encoding: UTF-8
2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-05-22 21:52:12 -07:00
require 'validators/quality_title_validator'
require 'ostruct'
module QualityTitleValidatorSpec
class Validatable < OpenStruct
include ActiveModel :: Validations
validates :title , :quality_title = > { :unless = > :private_message? }
end
end
describe " A record validated with QualityTitleValidator " do
let ( :valid_title ) { " hello this is my cool topic! welcome: all; " }
let ( :short_title ) { valid_title . slice ( 0 , SiteSetting . min_topic_title_length - 1 ) }
let ( :long_title ) { valid_title . center ( SiteSetting . max_topic_title_length + 1 , 'x' ) }
let ( :xxxxx_title ) { valid_title . gsub ( / . / , 'x' ) }
subject ( :topic ) { QualityTitleValidatorSpec :: Validatable . new }
before ( :each ) do
topic . stubs ( :private_message? = > false )
end
it " allows a regular title with a few ascii characters " do
topic . title = valid_title
2015-01-09 13:34:37 -03:00
expect ( topic ) . to be_valid
2013-05-22 21:52:12 -07:00
end
it " allows non ascii " do
topic . title = " Iñtërnâtiônàlizætiøn "
2015-01-09 13:34:37 -03:00
expect ( topic ) . to be_valid
2013-05-26 13:56:42 -07:00
end
it 'allows Chinese characters' do
topic . title = '现在发现使用中文标题没法发帖子了'
2015-01-09 13:34:37 -03:00
expect ( topic ) . to be_valid
2013-05-22 21:52:12 -07:00
end
it " allows anything in a private message " do
topic . stubs ( :private_message? = > true )
[ short_title , long_title , xxxxx_title ] . each do | bad_title |
topic . title = bad_title
2015-01-09 13:34:37 -03:00
expect ( topic ) . to be_valid
2013-05-22 21:52:12 -07:00
end
end
it " strips a title when identifying length " do
topic . title = short_title . center ( SiteSetting . min_topic_title_length + 1 , ' ' )
2015-01-09 13:34:37 -03:00
expect ( topic ) . not_to be_valid
2013-05-22 21:52:12 -07:00
end
it " doesn't allow a long title " do
topic . title = long_title
2015-01-09 13:34:37 -03:00
expect ( topic ) . not_to be_valid
2013-05-22 21:52:12 -07:00
end
it " doesn't allow a short title " do
topic . title = short_title
2015-01-09 13:34:37 -03:00
expect ( topic ) . not_to be_valid
2013-05-22 21:52:12 -07:00
end
it " doesn't allow a title of one repeated character " do
topic . title = xxxxx_title
2015-01-09 13:34:37 -03:00
expect ( topic ) . not_to be_valid
2013-05-22 21:52:12 -07:00
end
# describe "with a name" do
# it "is not valid without a name" do
# subject.stub(:name => nil)
# subject.should_not be_valid
# subject.should have(1).error_on(:name)
# subject.errors[:name].first.should == "can't be blank"
# end
# end
end