tests for business logic

This commit is contained in:
Ghytro
2024-11-07 20:49:19 +03:00
parent f7c1fdcf15
commit ee8d615531
4 changed files with 131 additions and 8 deletions

View File

@ -2,15 +2,16 @@ from typing import Callable
from dataclasses import dataclass
from exception import UrlRemoverNotImplementedException
from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
import re
@dataclass(init=True)
@dataclass(init=True, eq=True)
class TrackerRemovalProcessorMessage:
fromUsername: str
text: str
@dataclass(frozen=True, init=True)
@dataclass(frozen=True, init=True, eq=True)
class TrackerRemovalResult:
needsToReply: bool
text: str
@ -35,7 +36,9 @@ class TrackerRemovalMsgProcessor:
SCHEMES = ["http://", "https://"]
return len([s for s in SCHEMES if url.startswith(s)]) != 0
lexems = self.__msg.text.split()
SEPARATOR_CHARS = [" ", "\n"]
separator_regex = "("+"|".join(SEPARATOR_CHARS)+")"
lexems = re.split(separator_regex, self.__msg.text)
for i, l in enumerate(lexems):
if not is_url(l):
continue
@ -47,12 +50,15 @@ class TrackerRemovalMsgProcessor:
trackers_extracted = True
lexems[i] = removed_trackers_url
self.__msg.text = " ".join(lexems)
self.__msg.text = "".join(lexems)
return trackers_extracted
@staticmethod
def __remove_tracker(url: str) -> str:
parsed_url = urlparse(url)
try:
parsed_url = urlparse(url)
except Exception:
return url
if parsed_url.hostname is None:
return url
hostname = str(parsed_url.hostname)
@ -62,7 +68,7 @@ class TrackerRemovalMsgProcessor:
return url
def __emplace_sender_into_msg_text(self):
self.__msg.text = f'Message from {self.__msg.fromUsername}:\n\n{self.__msg.text}'
self.__msg.text = f'Message from @{self.__msg.fromUsername}:\n\n{self.__msg.text}'
class TrackerRemoverFactory:
@ -82,9 +88,9 @@ class TrackerRemoverFactory:
)
]
remover_one = [
r
r
for r in removers_by_domain
if len([d for d in r.domains if d.endswith(domain)]) != 0
if len([d for d in r.domains if domain.endswith(d)]) != 0
]
if len(remover_one) == 0:
raise UrlRemoverNotImplementedException(domain)