Unit test for word switching

merge-requests/30/head
Bob Mottram 2021-07-06 17:29:03 +01:00
parent f51b7194f4
commit 0eb405ef5b
2 changed files with 50 additions and 25 deletions

View File

@ -202,35 +202,35 @@ def dangerousCSS(filename: str, allowLocalNetworkAccess: bool) -> bool:
return False return False
def switchWords(baseDir: str, nickname: str, domain: str, content: str) -> str: def switchWords(baseDir: str, nickname: str, domain: str, content: str,
rules: [] = []) -> str:
"""Performs word replacements. eg. Trump -> The Orange Menace """Performs word replacements. eg. Trump -> The Orange Menace
""" """
if isPGPEncrypted(content) or containsPGPPublicKey(content): if isPGPEncrypted(content) or containsPGPPublicKey(content):
return content return content
switchWordsFilename = baseDir + '/accounts/' + \
nickname + '@' + domain + '/replacewords.txt' if not rules:
if not os.path.isfile(switchWordsFilename): switchWordsFilename = baseDir + '/accounts/' + \
return content nickname + '@' + domain + '/replacewords.txt'
with open(switchWordsFilename, 'r') as fp: if not os.path.isfile(switchWordsFilename):
for line in fp: return content
replaceStr = line.replace('\n', '').replace('\r', '') with open(switchWordsFilename, 'r') as fp:
wordTransform = None rules = fp.readlines()
if '->' in replaceStr:
wordTransform = replaceStr.split('->') for line in rules:
elif ':' in replaceStr: replaceStr = line.replace('\n', '').replace('\r', '')
wordTransform = replaceStr.split(':') splitters = ('->', ':', ',', ';', '-')
elif ',' in replaceStr: wordTransform = None
wordTransform = replaceStr.split(',') for splitStr in splitters:
elif ';' in replaceStr: if splitStr in replaceStr:
wordTransform = replaceStr.split(';') wordTransform = replaceStr.split(splitStr)
elif '-' in replaceStr: break
wordTransform = replaceStr.split('-') if not wordTransform:
if not wordTransform: continue
continue if len(wordTransform) == 2:
if len(wordTransform) == 2: replaceStr1 = wordTransform[0].strip().replace('"', '')
replaceStr1 = wordTransform[0].strip().replace('"', '') replaceStr2 = wordTransform[1].strip().replace('"', '')
replaceStr2 = wordTransform[1].strip().replace('"', '') content = content.replace(replaceStr1, replaceStr2)
content = content.replace(replaceStr1, replaceStr2)
return content return content

View File

@ -94,6 +94,7 @@ from inbox import jsonPostAllowsComments
from inbox import validInbox from inbox import validInbox
from inbox import validInboxFilenames from inbox import validInboxFilenames
from categories import guessHashtagCategory from categories import guessHashtagCategory
from content import switchWords
from content import extractTextFieldsInPOST from content import extractTextFieldsInPOST
from content import validHashTag from content import validHashTag
from content import htmlReplaceEmailQuote from content import htmlReplaceEmailQuote
@ -4117,9 +4118,33 @@ def _testUserAgentDomain() -> None:
assert userAgentDomain(userAgent, False) is None assert userAgentDomain(userAgent, False) is None
def _testSwitchWords() -> None:
print('testSwitchWords')
rules = [
"rock -> hamster",
"orange -> lemon"
]
baseDir = os.getcwd()
nickname = 'testuser'
domain = 'testdomain.com'
content = 'This is a test'
result = switchWords(baseDir, nickname, domain, content, rules)
assert result == content
content = 'This is orange test'
result = switchWords(baseDir, nickname, domain, content, rules)
assert result == 'This is lemon test'
content = 'This is a test rock'
result = switchWords(baseDir, nickname, domain, content, rules)
assert result == 'This is a test hamster'
def runAllTests(): def runAllTests():
print('Running tests...') print('Running tests...')
updateDefaultThemesList(os.getcwd()) updateDefaultThemesList(os.getcwd())
_testSwitchWords()
_testFunctions() _testFunctions()
_testUserAgentDomain() _testUserAgentDomain()
_testRoles() _testRoles()