db_query / tests /test_process_adjl.py
DavMelchi's picture
Fix ADJL pandas copy warnings
544393a
import warnings
import importlib
import sys
import types
import pandas as pd
def test_process_adjl_data_avoids_settingwithcopywarning(monkeypatch):
sys.modules.pop("queries.process_adjl", None)
sys.modules.setdefault("geopy", types.ModuleType("geopy"))
geopy_distance = types.ModuleType("geopy.distance")
geopy_distance.geodesic = lambda *args, **kwargs: None
sys.modules["geopy.distance"] = geopy_distance
fake_process_gsm = types.ModuleType("queries.process_gsm")
fake_process_gsm.process_gsm_data = lambda *args, **kwargs: pd.DataFrame()
sys.modules["queries.process_gsm"] = fake_process_gsm
fake_process_wcdma = types.ModuleType("queries.process_wcdma")
fake_process_wcdma.process_wcdma_data = lambda *args, **kwargs: pd.DataFrame()
sys.modules["queries.process_wcdma"] = fake_process_wcdma
fake_process_lte = types.ModuleType("queries.process_lte")
fake_process_lte.process_lte_data = lambda *args, **kwargs: [pd.DataFrame(), pd.DataFrame()]
sys.modules["queries.process_lte"] = fake_process_lte
process_adjl_module = importlib.import_module("queries.process_adjl")
process_adjl_data = process_adjl_module.process_adjl_data
monkeypatch.setattr(
process_adjl_module,
"read_dump_excel",
lambda *args, **kwargs: {
"ADJL": pd.DataFrame(
{
"BSC": [1, None],
"BCF": [2, None],
"BTS": [3, None],
"ADJL": ["g", "w"],
"earfcn": [9285, None],
"lteAdjCellTac": [100, None],
"RNC": [None, 11],
"WBTS": [None, 22],
"WCEL": [None, 33],
"AdjLEARFCN": [None, 9285],
}
),
"BTS": pd.DataFrame(),
"WCEL": pd.DataFrame(),
},
)
monkeypatch.setattr(
process_adjl_module,
"process_gsm_data",
lambda *args, **kwargs: pd.DataFrame(
{
"ID_BTS": ["1_2_3"],
"name": ["BTS_A"],
"Code_Sector": ["100_1"],
"ignored": ["x"],
}
),
)
monkeypatch.setattr(
process_adjl_module,
"process_wcdma_data",
lambda *args, **kwargs: pd.DataFrame(
{
"ID_WCEL": ["11_22_33"],
"name": ["WCEL_A"],
"Code_Sector": ["100_1"],
"ignored": ["x"],
}
),
)
monkeypatch.setattr(
process_adjl_module,
"process_lte_data",
lambda *args, **kwargs: [
pd.DataFrame(
{
"Code_Sector": ["100_1"],
"site_config_band": ["L700"],
"tac": [100],
"band": ["L700"],
"earfcnDL": [9285],
}
),
pd.DataFrame(
{
"Code_Sector": [],
"site_config_band": [],
"tac": [],
"band": [],
"earfcn": [],
}
),
],
)
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
gsm_adjl_df, wcdma_adjl_df, df_bts, df_wcel, _ = process_adjl_data("dummy.xlsx")
assert not any(
issubclass(warning.category, pd.errors.SettingWithCopyWarning)
for warning in caught
)
assert list(df_bts["adjl_exists"]) == [True]
assert list(df_wcel["adjl_exists"]) == [True]
assert list(gsm_adjl_df["adjl_band"]) == ["L700"]
assert list(wcdma_adjl_df["adjl_band"]) == ["L700"]