Ejemplo n.º 1
0
def test_construct_nodes_from_treatment_facility_request_pre_validation(
    contexts, valid_treatment_facility_dicts, pre_validated
):

    context = contexts["default"]
    facilities = context["api_recognize"]["treatment_facility"]["facility_type"]
    model_map = {k: dct["validator"] for k, dct in facilities.items()}
    _tmnt_ls = []

    for k, model in model_map.items():
        dct = valid_treatment_facility_dicts[model]
        dct["facility_type"] = k
        _tmnt_ls.append(dct)

    tmnt_facilities = {"treatment_facilities": _tmnt_ls}

    treatment_facilities = initialize_treatment_facilities(
        tmnt_facilities, pre_validated=pre_validated, context=context
    )
    tmnt_lst = treatment_facilities["treatment_facilities"]

    for m in tmnt_lst:

        # check that the joins happened
        assert m.get("rain_gauge") is not None
        if not pre_validated:
            # check that the model got validated
            assert m.get("valid_model") is not None
Ejemplo n.º 2
0
def background_initialize_treatment_facilities(treatment_facilities,
                                               pre_validated, context):
    return initialize_treatment_facilities(  # pragma: no cover
        treatment_facilities=treatment_facilities,
        pre_validated=pre_validated,
        context=context,
    )
Ejemplo n.º 3
0
def test_construct_nodes_from_treatment_facility_request(
    contexts, valid_treatment_facilities, ctxt_key, has_met_data
):

    context = contexts[ctxt_key]
    tmnt_facilities = {"treatment_facilities": valid_treatment_facilities}
    treatment_facilities = initialize_treatment_facilities(
        tmnt_facilities, pre_validated=True, context=context
    )

    tmnt_lst = treatment_facilities["treatment_facilities"]

    assert len(tmnt_lst) == len(valid_treatment_facilities)

    for n in tmnt_lst:
        if has_met_data:
            assert n.get("rain_gauge") is not None
        else:
            assert n.get("rain_gauge") is None
Ejemplo n.º 4
0
def initialize_graph(
    watershed: Dict[str, Any], treatment_pre_validated: bool, context: Dict[str, Any],
) -> Tuple[nx.DiGraph, List[str]]:

    errors: List[str] = []

    g = graph_factory(watershed["graph"])

    if not is_valid(g):
        err_msg = "NetworkValidationError: "
        _keys = ["node_cycles", "edge_cycles", "multiple_out_edges", "duplicate_edges"]
        for key, value in zip(_keys, validate_network(g)):
            if len(value) > 0:
                err_msg += ", " + ": ".join([key, str(value)])
        errors.append(err_msg)

    land_surface = land_surface_loading(watershed, details=False, context=context)
    errors.extend(land_surface["errors"])

    treatment_facilities = initialize_treatment_facilities(
        watershed, pre_validated=treatment_pre_validated, context=context
    )
    errors.extend(treatment_facilities["errors"])

    treatment_sites = initialize_treatment_sites(watershed, context=context,)
    errors.extend(treatment_sites["errors"])

    data: Dict[str, Any] = {}
    for dictlist in [
        watershed.get("previous_results", []),
        land_surface.get("summary", []),
        treatment_facilities.get("treatment_facilities", []),
        treatment_sites.get("treatment_sites", []),
    ]:
        node_data = dictlist_to_dict(dictlist, "node_id")
        for n, _data in node_data.items():
            if n not in data:
                data[n] = {}
            data[n].update(_data)

    nx.set_node_attributes(g, data)

    return g, errors
Ejemplo n.º 5
0
def test_construct_nodes_from_treatment_facility_request_checkval(
    contexts, valid_treatment_facility_dicts, ctxt_key, has_met_data, model, checkfor,
):

    context = contexts[ctxt_key]
    tmnt_facilities = {"treatment_facilities": [valid_treatment_facility_dicts[model]]}

    treatment_facilities = initialize_treatment_facilities(
        tmnt_facilities, pre_validated=True, context=context
    )
    tmnt_lst = treatment_facilities["treatment_facilities"][0]

    check_val = tmnt_lst.get(checkfor)
    assert isinstance(check_val, float)
    assert tmnt_lst.get("errors") is None

    if has_met_data:
        assert tmnt_lst.get("rain_gauge") is not None
    else:
        assert tmnt_lst.get("rain_gauge") is None