mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Fixes #2665. Regenerated by tabbott with `lint --fix` after a rebase and change in parameters. Note from tabbott: In a few cases, this converts technical debt in the form of unsorted imports into different technical debt in the form of our largest files having very long, ugly import sequences at the start. I expect this change will increase pressure for us to split those files, which isn't a bad thing. Signed-off-by: Anders Kaseorg <anders@zulip.com>
164 lines
6.2 KiB
Python
164 lines
6.2 KiB
Python
from unittest import TestCase
|
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
from tools.lib.capitalization import check_capitalization, get_safe_text, is_capitalized
|
|
|
|
|
|
class GetSafeTextTestCase(TestCase):
|
|
def test_get_safe_text(self) -> None:
|
|
string = ('Messages in __page_params.product_name__ go to a '
|
|
'stream and have a topic.')
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Messages in __page_params_product_name__ '
|
|
'go to a stream and have a topic.')
|
|
|
|
string = "Zulip Zulip. Zulip some text!"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Zulip zulip. Zulip some text!')
|
|
|
|
string = "Zulip Zulip? Zulip some text!"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Zulip zulip? Zulip some text!')
|
|
|
|
string = "Zulip Zulip! Zulip some text!"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Zulip zulip! Zulip some text!')
|
|
|
|
string = "Zulip Zulip, Zulip some text!"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Zulip zulip, zulip some text!')
|
|
|
|
string = "Some text 25MiB"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Some text 25mib')
|
|
|
|
string = "Not Ignored Phrase"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Not Ignored Phrase')
|
|
|
|
string = "Not ignored phrase"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Not ignored phrase')
|
|
|
|
string = ""
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, '')
|
|
|
|
string = """
|
|
<p>Please re-enter your password to confirm your identity.
|
|
(<a href="/accounts/password/reset/" target="_blank">Forgotten it?</a>)</p>
|
|
"""
|
|
safe_text = get_safe_text(string)
|
|
soup = BeautifulSoup(safe_text, 'lxml')
|
|
rendered_text = ' '.join(soup.text.split())
|
|
self.assertEqual(safe_text, rendered_text)
|
|
|
|
string = "Edited (__last_edit_timestr__)"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, string)
|
|
|
|
string = "iPhone application"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'Iphone application')
|
|
|
|
string = "One two etc. three"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'One two etc_ three')
|
|
|
|
string = "One two etc. three. four"
|
|
safe_text = get_safe_text(string)
|
|
self.assertEqual(safe_text, 'One two etc_ three. four')
|
|
|
|
class IsCapitalizedTestCase(TestCase):
|
|
def test_process_text(self) -> None:
|
|
string = "Zulip zulip. Zulip some text!"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Zulip zulip? Zulip some text!"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Zulip zulip! Zulip some text!"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Zulip zulip, Zulip some text!"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Some number 25mib"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Not Ignored Phrase"
|
|
capitalized = is_capitalized(string)
|
|
self.assertFalse(capitalized)
|
|
|
|
string = "Not ignored phrase"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = ""
|
|
capitalized = is_capitalized(string)
|
|
self.assertFalse(capitalized)
|
|
|
|
string = ("Please re-enter your password to confirm your identity."
|
|
" (Forgotten it?)")
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Edited (__last_edit_timestr__)"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "Iphone application"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
string = "One two etc_ three"
|
|
capitalized = is_capitalized(string)
|
|
self.assertTrue(capitalized)
|
|
|
|
class CheckCapitalizationTestCase(TestCase):
|
|
def test_check_capitalization(self) -> None:
|
|
strings = ["Zulip Zulip. Zulip some text!",
|
|
"Zulip Zulip? Zulip some text!",
|
|
"Zulip Zulip! Zulip some text!",
|
|
"Zulip Zulip, Zulip some text!",
|
|
"Some number 25MiB",
|
|
"Not Ignored Phrase",
|
|
"Not ignored phrase",
|
|
"Some text with realm in it",
|
|
"Realm in capital case",
|
|
('<p class="bot-settings-note padded-container"> Looking for our '
|
|
'<a href="/integrations" target="_blank">Integrations</a> or '
|
|
'<a href="/api" target="_blank">API</a> '
|
|
'documentation? </p>'),
|
|
]
|
|
errored, ignored, banned = check_capitalization(strings)
|
|
self.assertEqual(errored, ['Not Ignored Phrase'])
|
|
self.assertEqual(
|
|
ignored,
|
|
sorted(["Zulip Zulip. Zulip some text!",
|
|
"Zulip Zulip? Zulip some text!",
|
|
"Zulip Zulip! Zulip some text!",
|
|
"Zulip Zulip, Zulip some text!",
|
|
"Some number 25MiB",
|
|
('<p class="bot-settings-note padded-container"> Looking '
|
|
'for our <a href="/integrations" target="_blank">'
|
|
'Integrations</a> or <a href="/api" '
|
|
'target="_blank">API</a> documentation? </p>'),
|
|
]))
|
|
|
|
self.assertEqual(banned,
|
|
sorted(["realm found in 'Some text with realm in it'. "
|
|
"The term realm should not appear in user-facing "
|
|
"strings. Use organization instead.",
|
|
|
|
"realm found in 'Realm in capital case'. "
|
|
"The term realm should not appear in user-facing "
|
|
"strings. Use organization instead.",
|
|
]))
|