61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
import pytest
|
|
|
|
from delta_barth.analysis import forecast as fc
|
|
|
|
|
|
def test_sales_per_customer_success(sales_data):
|
|
customer_id = 1133
|
|
err, res = fc.sales_per_customer(sales_data, customer_id)
|
|
|
|
assert err == 0
|
|
assert res is not None
|
|
|
|
|
|
def test_sales_per_customer_too_few_data_points(sales_data):
|
|
customer_id = 1000
|
|
err, res = fc.sales_per_customer(sales_data, customer_id)
|
|
|
|
assert err == 1
|
|
assert res is None
|
|
|
|
|
|
def test_parse_api_resp_to_df(exmpl_api_sales_prognosis_resp):
|
|
resp = exmpl_api_sales_prognosis_resp
|
|
df = fc.parse_api_resp_to_df(resp)
|
|
features = set(
|
|
(
|
|
"artikelId",
|
|
"warengruppeId",
|
|
"firmaId",
|
|
"betrag",
|
|
"menge",
|
|
"buchungsDatum",
|
|
)
|
|
)
|
|
assert all(col in features for col in df.columns)
|
|
|
|
|
|
def test_preprocess_sales_per_customer(exmpl_api_sales_prognosis_resp):
|
|
resp = exmpl_api_sales_prognosis_resp
|
|
feat_mapping: dict[str, str] = {
|
|
"artikelId": "artikel_refid",
|
|
"firmaId": "firma_refid",
|
|
"betrag": "betrag",
|
|
"menge": "menge",
|
|
"buchungsDatum": "buchungs_datum",
|
|
}
|
|
target_features: frozenset[str] = frozenset(
|
|
(
|
|
"firma_refid",
|
|
"betrag",
|
|
"buchungs_datum",
|
|
)
|
|
)
|
|
df = fc.preprocess_sales_per_customer(
|
|
resp,
|
|
feature_map=feat_mapping,
|
|
target_features=target_features,
|
|
)
|
|
assert len(df.columns) == 5
|
|
assert any(feat not in df.columns for feat in feat_mapping.keys())
|