Remove deprecated mb_chars method (#34039)
				
					
				
			This commit is contained in:
		@@ -30,6 +30,22 @@ RSpec.describe NoteLengthValidator do
 | 
			
		||||
      expect(account.errors).to have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'counts multi byte emoji as single character' do
 | 
			
		||||
      text = '✨' * 500
 | 
			
		||||
      account = instance_double(Account, note: text, errors: activemodel_errors)
 | 
			
		||||
 | 
			
		||||
      subject.validate_each(account, 'note', text)
 | 
			
		||||
      expect(account.errors).to_not have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'counts ZWJ sequence emoji as single character' do
 | 
			
		||||
      text = '🏳️⚧️' * 500
 | 
			
		||||
      account = instance_double(Account, note: text, errors: activemodel_errors)
 | 
			
		||||
 | 
			
		||||
      subject.validate_each(account, 'note', text)
 | 
			
		||||
      expect(account.errors).to_not have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    private
 | 
			
		||||
 | 
			
		||||
    def starting_string
 | 
			
		||||
 
 | 
			
		||||
@@ -41,5 +41,31 @@ RSpec.describe PollOptionsValidator do
 | 
			
		||||
        expect(errors).to have_received(:add)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe 'character length of poll options' do
 | 
			
		||||
      context 'when poll has acceptable length options' do
 | 
			
		||||
        let(:options) { %w(test this) }
 | 
			
		||||
 | 
			
		||||
        it 'has no errors' do
 | 
			
		||||
          expect(errors).to_not have_received(:add)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when poll has multibyte and ZWJ emoji options' do
 | 
			
		||||
        let(:options) { ['✨' * described_class::MAX_OPTION_CHARS, '🏳️⚧️' * described_class::MAX_OPTION_CHARS] }
 | 
			
		||||
 | 
			
		||||
        it 'has no errors' do
 | 
			
		||||
          expect(errors).to_not have_received(:add)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when poll has options that are too long' do
 | 
			
		||||
        let(:options) { ['ok', 'a' * (described_class::MAX_OPTION_CHARS**2)] }
 | 
			
		||||
 | 
			
		||||
        it 'has errors' do
 | 
			
		||||
          expect(errors).to have_received(:add)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -80,6 +80,22 @@ RSpec.describe StatusLengthValidator do
 | 
			
		||||
      subject.validate(status)
 | 
			
		||||
      expect(status.errors).to have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'counts multi byte emoji as single character' do
 | 
			
		||||
      text = '✨' * 500
 | 
			
		||||
      status = status_double(text: text)
 | 
			
		||||
 | 
			
		||||
      subject.validate(status)
 | 
			
		||||
      expect(status.errors).to_not have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'counts ZWJ sequence emoji as single character' do
 | 
			
		||||
      text = '🏳️⚧️' * 500
 | 
			
		||||
      status = status_double(text: text)
 | 
			
		||||
 | 
			
		||||
      subject.validate(status)
 | 
			
		||||
      expect(status.errors).to_not have_received(:add)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user