from src.replacers.date_replacer import DateReplacer
from src.detections import NameDetection, SurnameDetection, DateDetection, CityDetection

def test_date_replacer():
    text = "Ala Brzeszczot urodziła sie 05.05.2005 we Wrocławiu"
    detections = [
        (0, 3, NameDetection()), 
        (4, 14, SurnameDetection()),
        (28, 38, DateDetection()),
        (42, 51, CityDetection()),
    ]
    
    replacer = DateReplacer()
    
    result = replacer.replace(text, detections)
    
    expected_text_beggining = "Ala Brzeszczot urodziła sie "
    expected_text_ending = " we Wrocławiu"
    exptected_detections_left = [
        (0, 3, NameDetection()),
        (4, 14, SurnameDetection()),
        (len(result[0]) - 9, len(result[0]), CityDetection()),
    ]
    
    assert result[0].startswith(expected_text_beggining)
    assert result[0].endswith(expected_text_ending)
    assert result[1] == exptected_detections_left
    
def test_date_replacer_same_date_same_replacement():
    text = "Ala Brzeszczot urodziła sie 05.05.2005 we Wrocławiu. 05.05.2005 to jej urodziny. 06.05.2005 to nie jej urodziny."
    detections = [
        (28, 38, DateDetection()),
        (53, 63, DateDetection()),
        (81, 91, DateDetection()),
    ]
    
    replacer = DateReplacer()
    
    result = replacer.replace(text, detections)
    
    assert result[0][29:39] == result[0][54:64]
    assert result[1] == []