adapt to new DelBar API
This commit is contained in:
parent
5e5486fe53
commit
6b4495eb7a
@ -5,7 +5,7 @@ from datetime import datetime as Datetime
|
|||||||
from typing import Final, Never
|
from typing import Final, Never
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from pydantic import BaseModel, PositiveFloat, PositiveInt
|
from pydantic import BaseModel, PositiveInt
|
||||||
from requests import Response
|
from requests import Response
|
||||||
|
|
||||||
from delta_barth.constants import HTTP_CURRENT_CONNECTION, KnownApiErrorCodes
|
from delta_barth.constants import HTTP_CURRENT_CONNECTION, KnownApiErrorCodes
|
||||||
@ -152,8 +152,9 @@ def logout(
|
|||||||
|
|
||||||
|
|
||||||
# ** sales data
|
# ** sales data
|
||||||
class SalesPrognosisRequest(BaseModel):
|
class SalesPrognosisRequestP(BaseModel):
|
||||||
berechnungszeitpunkt: Datetime
|
FirmaId: int | None
|
||||||
|
BuchungsDatum: Datetime | None
|
||||||
|
|
||||||
|
|
||||||
class SalesPrognosisResponseEntry(BaseModel):
|
class SalesPrognosisResponseEntry(BaseModel):
|
||||||
@ -171,18 +172,20 @@ class SalesPrognosisResponse(BaseModel):
|
|||||||
|
|
||||||
def get_sales_prognosis_data(
|
def get_sales_prognosis_data(
|
||||||
base_url: str,
|
base_url: str,
|
||||||
start_date: Datetime,
|
company_id: int | None = None,
|
||||||
|
start_date: Datetime | None = None,
|
||||||
) -> SalesPrognosisResponse:
|
) -> SalesPrognosisResponse:
|
||||||
_assert_login_status()
|
_assert_login_status()
|
||||||
ROUTE: Final[str] = "verkauf/umsatzprognosedaten"
|
ROUTE: Final[str] = "verkauf/umsatzprognosedaten"
|
||||||
URL: Final = combine_route(base_url, ROUTE)
|
URL: Final = combine_route(base_url, ROUTE)
|
||||||
|
|
||||||
sales_prog_req = SalesPrognosisRequest(
|
sales_prog_req = SalesPrognosisRequestP(
|
||||||
berechnungszeitpunkt=start_date,
|
FirmaId=company_id,
|
||||||
|
BuchungsDatum=start_date,
|
||||||
)
|
)
|
||||||
resp = requests.get(
|
resp = requests.get(
|
||||||
URL,
|
URL,
|
||||||
params=sales_prog_req.model_dump(mode="json"),
|
params=sales_prog_req.model_dump(mode="json", exclude_none=True),
|
||||||
headers=HTTP_CURRENT_CONNECTION.headers, # type: ignore[argumentType]
|
headers=HTTP_CURRENT_CONNECTION.headers, # type: ignore[argumentType]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -105,7 +105,8 @@ def test_login_logout(credentials, api_base_url):
|
|||||||
assert resp.error.message == "Nutzer oder Passwort falsch."
|
assert resp.error.message == "Nutzer oder Passwort falsch."
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.api_con_required
|
# @pytest.mark.api_con_required
|
||||||
|
@pytest.mark.new
|
||||||
def test_get_sales_prognosis_data(credentials, api_base_url):
|
def test_get_sales_prognosis_data(credentials, api_base_url):
|
||||||
resp = common.login(
|
resp = common.login(
|
||||||
base_url=api_base_url,
|
base_url=api_base_url,
|
||||||
@ -114,13 +115,32 @@ def test_get_sales_prognosis_data(credentials, api_base_url):
|
|||||||
database=credentials["db"],
|
database=credentials["db"],
|
||||||
mandant=credentials["mandant"],
|
mandant=credentials["mandant"],
|
||||||
)
|
)
|
||||||
|
# test without company ID
|
||||||
assert resp.error is None
|
assert resp.error is None
|
||||||
date = Datetime(2022, 6, 1)
|
date = Datetime(2022, 6, 1)
|
||||||
resp = common.get_sales_prognosis_data(api_base_url, date)
|
resp = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||||
assert resp.error is None
|
assert resp.error is None
|
||||||
assert len(resp.daten) > 0
|
assert len(resp.daten) > 0
|
||||||
date = Datetime(2030, 1, 1)
|
date = Datetime(2030, 1, 1)
|
||||||
resp = common.get_sales_prognosis_data(api_base_url, date)
|
resp = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||||
|
assert resp.error is None
|
||||||
|
assert len(resp.daten) == 0
|
||||||
|
# test with company ID
|
||||||
|
assert resp.error is None
|
||||||
|
date = Datetime(2022, 6, 1)
|
||||||
|
company_id = 1024
|
||||||
|
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||||
|
assert resp.error is None
|
||||||
|
assert len(resp.daten) > 0
|
||||||
|
date = Datetime(2030, 1, 1)
|
||||||
|
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||||
|
assert resp.error is None
|
||||||
|
assert len(resp.daten) == 0
|
||||||
|
# test with non-existent company ID
|
||||||
|
assert resp.error is None
|
||||||
|
date = Datetime(2022, 6, 1)
|
||||||
|
company_id = 1000024
|
||||||
|
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||||
assert resp.error is None
|
assert resp.error is None
|
||||||
assert len(resp.daten) == 0
|
assert len(resp.daten) == 0
|
||||||
# close connection
|
# close connection
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user