Skip to content

Commit fb0a76d

Browse files
committed
Added test to translation and fixed stuff
Added logs Fixed problems with pull request Added documentation Added typing information
1 parent 20c5c60 commit fb0a76d

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

app/internal/translation.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from textblob.exceptions import NotTranslated
77

88
from app.database.database import SessionLocal
9-
from app.database.models import User
9+
from loguru import logger
10+
from app.routers.user import get_users
1011

1112
download_corpora.download_all()
1213

@@ -19,8 +20,8 @@ def translate_text(text: str,
1920
Translate text to the target language
2021
optionally given the original language
2122
"""
22-
if len(text) <= 0:
23-
return "No text to translate"
23+
if not text.strip():
24+
return ""
2425
if original_lang is None:
2526
original_lang = _detect_text_language(text)
2627
else:
@@ -50,11 +51,10 @@ def _get_user_language(user_id: int, session: SessionLocal) -> str:
5051
Gets a user-id and returns the language he speaks
5152
Uses the DB"""
5253
try:
53-
user = (
54-
session.query(User).filter(User.id == user_id).first()
55-
)
54+
user = get_users(session, id=user_id)[0]
5655
language_user = user.language
5756
except SQLAlchemyError:
57+
logger.exception("User of user preferred language was not found in the database.")
5858
return ""
5959
else:
6060
return language_user
@@ -74,4 +74,8 @@ def translate_text_for_user(text: str,
7474

7575

7676
def _lang_full_to_short(full_lang: str) -> str:
77+
"""
78+
Gets the full language name and
79+
converts it to a two-letter language name
80+
"""
7781
return languages.get(name=full_lang.capitalize()).alpha2

app/routers/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from app.internal.utils import save
88

99

10-
def create_user(username, password, email, language, session: Session) -> User:
10+
def create_user(username: str, password: str, email: str, language: str, session: Session) -> User:
1111
"""Creates and saves a new user."""
1212

1313
user = User(

tests/test_translation.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,12 @@ def test_translate_text_with_same_original_target_lang_without_original_lang(
6969

7070
def test_translate_text_without_text_with_original_target_lang():
7171
answer = translate_text("", "english", "russian")
72-
assert answer == "No text to translate"
72+
assert answer == ""
7373

7474

7575
def test_translate_text_without_text_without_original_lang():
7676
answer = translate_text("", "english")
77-
assert answer == "No text to translate"
77+
assert answer == ""
7878

7979

8080
def test_lang_short_to_full():
@@ -126,3 +126,17 @@ def test_translate_text_with_text_impossible_to_translate(
126126
def test_translate_text_with_symbols(text, target_lang, original_lang):
127127
answer = translate_text(text, target_lang, original_lang)
128128
assert "@ Hello # my $ friend!" == answer
129+
130+
131+
@pytest.mark.parametrize("text, target_lang, original_lang",
132+
[("Привет мой друг", "italian", "spanish"),
133+
("Hola mi amigo", "english", "russian"),
134+
("Bonjour, mon ami", "russian", "german"),
135+
("Ciao amico", "french", "german")
136+
])
137+
def test_translate_text_with_with_incorrect_lang(
138+
text,
139+
target_lang,
140+
original_lang):
141+
answer = translate_text(text, target_lang, original_lang)
142+
assert answer == text

0 commit comments

Comments
 (0)