File size: 1,319 Bytes
b0d0019 | 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 | """
Unit tests for the preprocessing pipeline.
"""
import pytest
import pandas as pd
from app.services.preprocessing import extract_city, filter_by_city, dataframe_to_json_string
def test_extract_city_known():
assert extract_city("123 Street, Cairo, Egypt") == "Cairo"
assert extract_city("Near Luxor Temple, Luxor") == "Luxor"
def test_extract_city_none():
assert extract_city(None) is None
assert extract_city(float("nan")) is None
def test_extract_city_unknown():
result = extract_city("Some unknown village far away")
assert result is None
def test_filter_by_city():
df = pd.DataFrame({
"name": ["Place A", "Place B", "Place C"],
"city": ["Cairo", "Luxor", "Cairo"],
})
filtered = filter_by_city(df, "Cairo")
assert len(filtered) == 2
assert set(filtered["name"]) == {"Place A", "Place C"}
def test_filter_by_city_case_insensitive():
df = pd.DataFrame({"name": ["X"], "city": ["Luxor"]})
filtered = filter_by_city(df, "luxor")
assert len(filtered) == 1
def test_dataframe_to_json_string():
df = pd.DataFrame({"a": [1, 2], "b": ["x", "y"]})
result = dataframe_to_json_string(df)
import json
parsed = json.loads(result)
assert isinstance(parsed, list)
assert len(parsed) == 2
assert parsed[0]["a"] == 1
|