Fix StatusLengthValidator tests

This fixes the StatusLengthValidator tests to use
StatusLengthValidator::MAX_CHARS to derive the length of the strings
tested, and so makes them resilient to changes in MAX_CHARS (such as the
one that made these tests fail, with it being changed from 500 to 512).

This seems a bit odd for some types of tests, but appears to make sense
here, where the testing goes beyond `status.length > MAX_CHARS`.
This commit is contained in:
aschmitz 2017-08-27 21:12:10 -05:00 committed by Surinna Curtis
parent 667df47168
commit e18ed4bbc7
1 changed files with 15 additions and 8 deletions

View File

@ -7,26 +7,31 @@ describe StatusLengthValidator do
it 'does not add errors onto remote statuses' it 'does not add errors onto remote statuses'
it 'does not add errors onto local reblogs' it 'does not add errors onto local reblogs'
it 'adds an error when content warning is over 500 characters' do it 'adds an error when content warning is over MAX_CHARS characters' do
status = double(spoiler_text: 'a' * 520, text: '', errors: double(add: nil), local?: true, reblog?: false) chars = StatusLengthValidator::MAX_CHARS + 1
status = double(spoiler_text: 'a' * chars, text: '', errors: double(add: nil), local?: true, reblog?: false)
subject.validate(status) subject.validate(status)
expect(status.errors).to have_received(:add) expect(status.errors).to have_received(:add)
end end
it 'adds an error when text is over 500 characters' do it 'adds an error when text is over MAX_CHARS characters' do
status = double(spoiler_text: '', text: 'a' * 520, errors: double(add: nil), local?: true, reblog?: false) chars = StatusLengthValidator::MAX_CHARS + 1
status = double(spoiler_text: '', text: 'a' * chars, errors: double(add: nil), local?: true, reblog?: false)
subject.validate(status) subject.validate(status)
expect(status.errors).to have_received(:add) expect(status.errors).to have_received(:add)
end end
it 'adds an error when text and content warning are over 500 characters total' do it 'adds an error when text and content warning are over MAX_CHARS characters total' do
status = double(spoiler_text: 'a' * 250, text: 'b' * 251, errors: double(add: nil), local?: true, reblog?: false) chars1 = 20
chars2 = StatusLengthValidator::MAX_CHARS + 1 - chars1
status = double(spoiler_text: 'a' * chars1, text: 'b' * chars2, errors: double(add: nil), local?: true, reblog?: false)
subject.validate(status) subject.validate(status)
expect(status.errors).to have_received(:add) expect(status.errors).to have_received(:add)
end end
it 'counts URLs as 23 characters flat' do it 'counts URLs as 23 characters flat' do
text = ('a' * 476) + " http://#{'b' * 30}.com/example" chars = StatusLengthValidator::MAX_CHARS - 1 - 23
text = ('a' * chars) + " http://#{'b' * 30}.com/example"
status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
subject.validate(status) subject.validate(status)
@ -34,7 +39,9 @@ describe StatusLengthValidator do
end end
it 'counts only the front part of remote usernames' do it 'counts only the front part of remote usernames' do
text = ('a' * 475) + " @alice@#{'b' * 30}.com" username = '@alice'
chars = StatusLengthValidator::MAX_CHARS - 1 - username.length
text = ('a' * 475) + " #{username}@#{'b' * 30}.com"
status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false) status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
subject.validate(status) subject.validate(status)