| 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"] |
|
|