Spaces:
Sleeping
Sleeping
File size: 8,554 Bytes
86c402d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
import uuid
from uuid import UUID
from ntr_text_fragmentation.models.linker_entity import LinkerEntity
class TestLink:
"""Набор тестов для проверки функциональности связей (линков) с использованием LinkerEntity."""
def test_create_link(self):
"""Тест создания объекта LinkerEntity с параметрами связи."""
link_id = uuid.uuid4()
name = "Тестовая связь"
text = "Это текст тестовой связи"
in_search_text = "Текст для поиска связи"
metadata = {"key": "value"}
source_id = uuid.uuid4()
target_id = uuid.uuid4()
link = LinkerEntity(
id=link_id,
name=name,
text=text,
in_search_text=in_search_text,
metadata=metadata,
source_id=source_id,
target_id=target_id,
type="Link"
)
assert link.id == link_id
assert link.name == name
assert link.text == text
assert link.in_search_text == in_search_text
assert link.metadata == metadata
assert link.source_id == source_id
assert link.target_id == target_id
assert link.type == "Link"
assert link.number_in_relation is None
assert link.is_link() is True
def test_link_fixture(self, sample_link):
"""Тест использования фикстуры с предустановленными значениями."""
assert sample_link.id == UUID('98765432-9876-5432-9876-543298765432')
assert sample_link.name == "Тестовая связь"
assert sample_link.text == "Текст тестовой связи"
assert sample_link.in_search_text is None # Значение по умолчанию
assert sample_link.metadata == {"test_key": "test_value"}
assert sample_link.source_id == UUID('12345678-1234-5678-1234-567812345678')
assert sample_link.target_id == UUID('87654321-8765-4321-8765-432187654321')
assert sample_link.type == "Link"
assert sample_link.number_in_relation is None
assert sample_link.is_link() is True
def test_link_with_number_in_relation(self):
"""Тест создания объекта LinkerEntity с указанным номером в связи."""
link_id = uuid.uuid4()
name = "Тестовая связь"
text = "Это текст тестовой связи"
in_search_text = "Текст для поиска связи"
metadata = {"key": "value"}
source_id = uuid.uuid4()
target_id = uuid.uuid4()
number_in_relation = 1
link = LinkerEntity(
id=link_id,
name=name,
text=text,
in_search_text=in_search_text,
metadata=metadata,
source_id=source_id,
target_id=target_id,
number_in_relation=number_in_relation,
type="Link"
)
assert link.id == link_id
assert link.name == name
assert link.text == text
assert link.in_search_text == in_search_text
assert link.metadata == metadata
assert link.source_id == source_id
assert link.target_id == target_id
assert link.type == "Link"
assert link.number_in_relation == number_in_relation
assert link.is_link() is True
def test_link_to_string(self):
"""Тест метода __str__()."""
# Без in_search_text
link = LinkerEntity(
id=uuid.uuid4(),
name="Тестовая связь",
text="Текст тестовой связи",
metadata={},
source_id=uuid.uuid4(),
target_id=uuid.uuid4(),
type="Link"
)
expected_string = "Тестовая связь: Текст тестовой связи"
assert str(link) == expected_string
# С in_search_text
link_with_search_text = LinkerEntity(
id=uuid.uuid4(),
name="Тестовая связь",
text="Текст тестовой связи",
in_search_text="Специальный текст для поиска",
metadata={},
source_id=uuid.uuid4(),
target_id=uuid.uuid4(),
type="Link"
)
assert str(link_with_search_text) == "Специальный текст для поиска"
def test_link_compare(self, sample_link):
"""Тест метода __eq__ для сравнения связей."""
# Создаем копию с теми же основными атрибутами
same_link = LinkerEntity(
id=sample_link.id,
name=sample_link.name,
text=sample_link.text,
in_search_text="Другой текст для поиска", # Отличается от sample_link
metadata={}, # Отличается от sample_link
source_id=sample_link.source_id,
target_id=sample_link.target_id,
type="Link"
)
# Должны быть равны по __eq__, так как метаданные и in_search_text не учитываются в сравнении
assert sample_link == same_link
# Создаем связь с другим ID
different_id_link = LinkerEntity(
id=uuid.uuid4(),
name=sample_link.name,
text=sample_link.text,
metadata=sample_link.metadata,
source_id=sample_link.source_id,
target_id=sample_link.target_id,
type="Link"
)
assert sample_link != different_id_link
def test_invalid_link_creation(self):
"""Тест создания некорректной связи (без source_id или target_id)."""
link_id = uuid.uuid4()
# Пробуем создать связь только с source_id
try:
LinkerEntity(
id=link_id,
name="Некорректная связь",
text="Текст некорректной связи",
metadata={},
source_id=uuid.uuid4()
)
assert False, "Создание связи только с source_id должно вызывать исключение"
except ValueError:
pass
# Пробуем создать связь только с target_id
try:
LinkerEntity(
id=link_id,
name="Некорректная связь",
text="Текст некорректной связи",
metadata={},
target_id=uuid.uuid4()
)
assert False, "Создание связи только с target_id должно вызывать исключение"
except ValueError:
pass
def test_linker_entity_as_link(self):
"""Тест использования LinkerEntity как связи."""
entity_id = uuid.uuid4()
source_id = uuid.uuid4()
target_id = uuid.uuid4()
# Создаем LinkerEntity с source_id и target_id
linking_entity = LinkerEntity(
id=entity_id,
name="Связывающая сущность",
text="Текст связывающей сущности",
metadata={},
source_id=source_id,
target_id=target_id
)
# Проверяем, что LinkerEntity может выступать как связь
assert linking_entity.is_link() is True
assert linking_entity.source_id == source_id
assert linking_entity.target_id == target_id
# Создаем обычную сущность
regular_entity = LinkerEntity(
id=uuid.uuid4(),
name="Обычная сущность",
text="Текст обычной сущности",
metadata={}
)
# Проверяем, что обычная сущность не является связью
assert regular_entity.is_link() is False |