mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Unit test for word switching
							parent
							
								
									f51b7194f4
								
							
						
					
					
						commit
						0eb405ef5b
					
				
							
								
								
									
										50
									
								
								content.py
								
								
								
								
							
							
						
						
									
										50
									
								
								content.py
								
								
								
								
							| 
						 | 
				
			
			@ -202,35 +202,35 @@ def dangerousCSS(filename: str, allowLocalNetworkAccess: bool) -> bool:
 | 
			
		|||
    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
 | 
			
		||||
    """
 | 
			
		||||
    if isPGPEncrypted(content) or containsPGPPublicKey(content):
 | 
			
		||||
        return content
 | 
			
		||||
    switchWordsFilename = baseDir + '/accounts/' + \
 | 
			
		||||
        nickname + '@' + domain + '/replacewords.txt'
 | 
			
		||||
    if not os.path.isfile(switchWordsFilename):
 | 
			
		||||
        return content
 | 
			
		||||
    with open(switchWordsFilename, 'r') as fp:
 | 
			
		||||
        for line in fp:
 | 
			
		||||
            replaceStr = line.replace('\n', '').replace('\r', '')
 | 
			
		||||
            wordTransform = None
 | 
			
		||||
            if '->' in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split('->')
 | 
			
		||||
            elif ':' in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split(':')
 | 
			
		||||
            elif ',' in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split(',')
 | 
			
		||||
            elif ';' in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split(';')
 | 
			
		||||
            elif '-' in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split('-')
 | 
			
		||||
            if not wordTransform:
 | 
			
		||||
                continue
 | 
			
		||||
            if len(wordTransform) == 2:
 | 
			
		||||
                replaceStr1 = wordTransform[0].strip().replace('"', '')
 | 
			
		||||
                replaceStr2 = wordTransform[1].strip().replace('"', '')
 | 
			
		||||
                content = content.replace(replaceStr1, replaceStr2)
 | 
			
		||||
 | 
			
		||||
    if not rules:
 | 
			
		||||
        switchWordsFilename = baseDir + '/accounts/' + \
 | 
			
		||||
            nickname + '@' + domain + '/replacewords.txt'
 | 
			
		||||
        if not os.path.isfile(switchWordsFilename):
 | 
			
		||||
            return content
 | 
			
		||||
        with open(switchWordsFilename, 'r') as fp:
 | 
			
		||||
            rules = fp.readlines()
 | 
			
		||||
 | 
			
		||||
    for line in rules:
 | 
			
		||||
        replaceStr = line.replace('\n', '').replace('\r', '')
 | 
			
		||||
        splitters = ('->', ':', ',', ';', '-')
 | 
			
		||||
        wordTransform = None
 | 
			
		||||
        for splitStr in splitters:
 | 
			
		||||
            if splitStr in replaceStr:
 | 
			
		||||
                wordTransform = replaceStr.split(splitStr)
 | 
			
		||||
                break
 | 
			
		||||
        if not wordTransform:
 | 
			
		||||
            continue
 | 
			
		||||
        if len(wordTransform) == 2:
 | 
			
		||||
            replaceStr1 = wordTransform[0].strip().replace('"', '')
 | 
			
		||||
            replaceStr2 = wordTransform[1].strip().replace('"', '')
 | 
			
		||||
            content = content.replace(replaceStr1, replaceStr2)
 | 
			
		||||
    return content
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										25
									
								
								tests.py
								
								
								
								
							
							
						
						
									
										25
									
								
								tests.py
								
								
								
								
							| 
						 | 
				
			
			@ -94,6 +94,7 @@ from inbox import jsonPostAllowsComments
 | 
			
		|||
from inbox import validInbox
 | 
			
		||||
from inbox import validInboxFilenames
 | 
			
		||||
from categories import guessHashtagCategory
 | 
			
		||||
from content import switchWords
 | 
			
		||||
from content import extractTextFieldsInPOST
 | 
			
		||||
from content import validHashTag
 | 
			
		||||
from content import htmlReplaceEmailQuote
 | 
			
		||||
| 
						 | 
				
			
			@ -4117,9 +4118,33 @@ def _testUserAgentDomain() -> 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():
 | 
			
		||||
    print('Running tests...')
 | 
			
		||||
    updateDefaultThemesList(os.getcwd())
 | 
			
		||||
    _testSwitchWords()
 | 
			
		||||
    _testFunctions()
 | 
			
		||||
    _testUserAgentDomain()
 | 
			
		||||
    _testRoles()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue