0
0
Fork 0

Remove deprecated mb_chars method (#34039)

This commit is contained in:
Matt Jankowski 2025-03-03 11:50:57 -05:00 committed by GitHub
parent 43f616a1c8
commit d90d68bddf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 69 additions and 11 deletions

View file

@ -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

View file

@ -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

View file

@ -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