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