107 lines
3.4 KiB
Python
107 lines
3.4 KiB
Python
|
|
import pytest
|
||
|
|
from src.core.tag import Tag
|
||
|
|
|
||
|
|
|
||
|
|
class TestTag:
|
||
|
|
"""Testy pro třídu Tag"""
|
||
|
|
|
||
|
|
def test_tag_creation(self):
|
||
|
|
"""Test vytvoření tagu"""
|
||
|
|
tag = Tag("Kategorie", "Název")
|
||
|
|
assert tag.category == "Kategorie"
|
||
|
|
assert tag.name == "Název"
|
||
|
|
|
||
|
|
def test_tag_full_path(self):
|
||
|
|
"""Test full_path property"""
|
||
|
|
tag = Tag("Video", "HD")
|
||
|
|
assert tag.full_path == "Video/HD"
|
||
|
|
|
||
|
|
def test_tag_str_representation(self):
|
||
|
|
"""Test string reprezentace"""
|
||
|
|
tag = Tag("Foto", "Dovolená")
|
||
|
|
assert str(tag) == "Foto/Dovolená"
|
||
|
|
|
||
|
|
def test_tag_repr(self):
|
||
|
|
"""Test repr reprezentace"""
|
||
|
|
tag = Tag("Audio", "Hudba")
|
||
|
|
assert repr(tag) == "Tag(Audio/Hudba)"
|
||
|
|
|
||
|
|
def test_tag_equality_same_tags(self):
|
||
|
|
"""Test rovnosti stejných tagů"""
|
||
|
|
tag1 = Tag("Kategorie", "Název")
|
||
|
|
tag2 = Tag("Kategorie", "Název")
|
||
|
|
assert tag1 == tag2
|
||
|
|
|
||
|
|
def test_tag_equality_different_tags(self):
|
||
|
|
"""Test nerovnosti různých tagů"""
|
||
|
|
tag1 = Tag("Kategorie1", "Název")
|
||
|
|
tag2 = Tag("Kategorie2", "Název")
|
||
|
|
assert tag1 != tag2
|
||
|
|
|
||
|
|
tag3 = Tag("Kategorie", "Název1")
|
||
|
|
tag4 = Tag("Kategorie", "Název2")
|
||
|
|
assert tag3 != tag4
|
||
|
|
|
||
|
|
def test_tag_equality_with_non_tag(self):
|
||
|
|
"""Test porovnání s ne-Tag objektem"""
|
||
|
|
tag = Tag("Kategorie", "Název")
|
||
|
|
assert tag != "Kategorie/Název"
|
||
|
|
assert tag != 123
|
||
|
|
assert tag != None
|
||
|
|
|
||
|
|
def test_tag_hash(self):
|
||
|
|
"""Test hashování - důležité pro použití v set/dict"""
|
||
|
|
tag1 = Tag("Kategorie", "Název")
|
||
|
|
tag2 = Tag("Kategorie", "Název")
|
||
|
|
tag3 = Tag("Jiná", "Název")
|
||
|
|
|
||
|
|
# Stejné tagy mají stejný hash
|
||
|
|
assert hash(tag1) == hash(tag2)
|
||
|
|
# Různé tagy mají různý hash (většinou)
|
||
|
|
assert hash(tag1) != hash(tag3)
|
||
|
|
|
||
|
|
def test_tag_in_set(self):
|
||
|
|
"""Test použití tagů v set"""
|
||
|
|
tag1 = Tag("Kategorie", "Název")
|
||
|
|
tag2 = Tag("Kategorie", "Název")
|
||
|
|
tag3 = Tag("Jiná", "Název")
|
||
|
|
|
||
|
|
tag_set = {tag1, tag2, tag3}
|
||
|
|
# tag1 a tag2 jsou stejné, takže set obsahuje pouze 2 prvky
|
||
|
|
assert len(tag_set) == 2
|
||
|
|
assert tag1 in tag_set
|
||
|
|
assert tag3 in tag_set
|
||
|
|
|
||
|
|
def test_tag_in_dict(self):
|
||
|
|
"""Test použití tagů jako klíčů v dict"""
|
||
|
|
tag1 = Tag("Kategorie", "Název")
|
||
|
|
tag2 = Tag("Kategorie", "Název")
|
||
|
|
|
||
|
|
tag_dict = {tag1: "hodnota1"}
|
||
|
|
tag_dict[tag2] = "hodnota2"
|
||
|
|
|
||
|
|
# tag1 a tag2 jsou stejné, takže dict má 1 klíč
|
||
|
|
assert len(tag_dict) == 1
|
||
|
|
assert tag_dict[tag1] == "hodnota2"
|
||
|
|
|
||
|
|
def test_tag_with_special_characters(self):
|
||
|
|
"""Test tagů se speciálními znaky"""
|
||
|
|
tag = Tag("Kategorie/Složitá", "Název s mezerami")
|
||
|
|
assert tag.category == "Kategorie/Složitá"
|
||
|
|
assert tag.name == "Název s mezerami"
|
||
|
|
assert tag.full_path == "Kategorie/Složitá/Název s mezerami"
|
||
|
|
|
||
|
|
def test_tag_with_empty_strings(self):
|
||
|
|
"""Test tagů s prázdnými řetězci"""
|
||
|
|
tag = Tag("", "")
|
||
|
|
assert tag.category == ""
|
||
|
|
assert tag.name == ""
|
||
|
|
assert tag.full_path == "/"
|
||
|
|
|
||
|
|
def test_tag_unicode(self):
|
||
|
|
"""Test tagů s unicode znaky"""
|
||
|
|
tag = Tag("Kategorie", "Čeština")
|
||
|
|
assert tag.category == "Kategorie"
|
||
|
|
assert tag.name == "Čeština"
|
||
|
|
assert tag.full_path == "Kategorie/Čeština"
|