You've already forked RekomenciBackend
96 lines
2.8 KiB
Python
96 lines
2.8 KiB
Python
from datetime import UTC
|
|
from decimal import Decimal
|
|
from uuid import UUID, uuid4
|
|
|
|
from template_project.application.common.enums import ExperienceType
|
|
from template_project.application.vacancy.entity import Vacancy, VacancyEmbedding, VacancyId
|
|
|
|
|
|
def test_vacancy_factory_creates_valid_vacancy() -> None:
|
|
vacancy = Vacancy.factory(
|
|
position="Python Developer",
|
|
from_salary=Decimal(100000),
|
|
to_salary=Decimal(150000),
|
|
experience_type=ExperienceType.BETWEEN_3_AND_6,
|
|
description="Backend development",
|
|
key_skills=["Python", "FastAPI"],
|
|
)
|
|
|
|
assert isinstance(vacancy.id, UUID)
|
|
assert vacancy.position == "Python Developer"
|
|
assert vacancy.from_salary == Decimal(100000)
|
|
assert vacancy.to_salary == Decimal(150000)
|
|
assert vacancy.experience_type == ExperienceType.BETWEEN_3_AND_6
|
|
assert vacancy.description == "Backend development"
|
|
assert vacancy.key_skills == ["Python", "FastAPI"]
|
|
assert vacancy.deleted_at is None
|
|
assert vacancy.created_at.tzinfo == UTC
|
|
|
|
|
|
def test_vacancy_salary_order() -> None:
|
|
vacancy = Vacancy.factory(
|
|
position="Developer",
|
|
from_salary=Decimal(100000),
|
|
to_salary=Decimal(150000),
|
|
experience_type=ExperienceType.BETWEEN_1_AND_3,
|
|
description="Test",
|
|
key_skills=[],
|
|
)
|
|
|
|
assert vacancy.from_salary <= vacancy.to_salary
|
|
|
|
|
|
def test_vacancy_equal_salaries() -> None:
|
|
vacancy = Vacancy.factory(
|
|
position="Developer",
|
|
from_salary=Decimal(100000),
|
|
to_salary=Decimal(100000),
|
|
experience_type=ExperienceType.BETWEEN_1_AND_3,
|
|
description="Test",
|
|
key_skills=[],
|
|
)
|
|
|
|
assert vacancy.from_salary == vacancy.to_salary
|
|
|
|
|
|
def test_vacancy_empty_key_skills() -> None:
|
|
vacancy = Vacancy.factory(
|
|
position="Developer",
|
|
from_salary=Decimal(100000),
|
|
to_salary=Decimal(150000),
|
|
experience_type=ExperienceType.NO_EXPERIENCE,
|
|
description="Test",
|
|
key_skills=[],
|
|
)
|
|
|
|
assert vacancy.key_skills == []
|
|
|
|
|
|
def test_vacancy_embedding_vector_dimension() -> None:
|
|
vacancy_id = VacancyId(uuid4())
|
|
vector = [0.1] * 384
|
|
|
|
embedding = VacancyEmbedding.factory(
|
|
vacancy_id=vacancy_id,
|
|
vector=vector,
|
|
)
|
|
|
|
assert len(embedding.vector) == 384
|
|
assert all(isinstance(x, float) for x in embedding.vector)
|
|
|
|
|
|
def test_vacancy_embedding_factory_creates_valid_embedding() -> None:
|
|
vacancy_id = VacancyId(uuid4())
|
|
vector = [0.1, 0.2, 0.3, 0.4, 0.5]
|
|
|
|
embedding = VacancyEmbedding.factory(
|
|
vacancy_id=vacancy_id,
|
|
vector=vector,
|
|
)
|
|
|
|
assert isinstance(embedding.id, UUID)
|
|
assert embedding.vacancy_id == vacancy_id
|
|
assert embedding.vector == vector
|
|
assert embedding.deleted_at is None
|
|
assert embedding.created_at.tzinfo == UTC
|