TouRa / tests /test_preprocessing.py
alaa wael
Initial deploy
b0d0019
Raw History Blame Contribute Delete
1.32 kB
"""
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