File size: 3,748 Bytes
544393a | 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 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"]
|