143 lines
4.8 KiB
Python
143 lines
4.8 KiB
Python
from datetime import datetime as Datetime
|
|
|
|
import pytest
|
|
import requests
|
|
|
|
from delta_barth.api import requests as requests_
|
|
|
|
|
|
@pytest.mark.api_con_required
|
|
def test_get_sales_prognosis_data_Success(session):
|
|
# do not login: let routine do it
|
|
# test without company ID
|
|
date = Datetime(2023, 12, 15)
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, date)
|
|
assert status.code == 0
|
|
assert len(resp.daten) > 0
|
|
date = Datetime(2030, 1, 1)
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, date)
|
|
assert status.code == 0
|
|
assert len(resp.daten) == 0
|
|
# test with company ID
|
|
assert status.code == 0
|
|
date = Datetime(2023, 8, 15)
|
|
company_ids = [5661, 1027]
|
|
resp, status = requests_.get_sales_prognosis_data(session, company_ids, date)
|
|
assert status.code == 0
|
|
assert len(resp.daten) > 0
|
|
date = Datetime(2030, 1, 1)
|
|
resp, status = requests_.get_sales_prognosis_data(session, company_ids, date)
|
|
assert status.code == 0
|
|
assert len(resp.daten) == 0
|
|
# test with non-existent company ID
|
|
assert status.code == 0
|
|
date = Datetime(2022, 6, 1)
|
|
company_ids = [1000024]
|
|
resp, status = requests_.get_sales_prognosis_data(session, company_ids, date)
|
|
assert status.code == 0
|
|
assert len(resp.daten) == 0
|
|
# test without date
|
|
company_ids = [1024]
|
|
resp, status = requests_.get_sales_prognosis_data(session, company_ids, None)
|
|
assert status.code == 0
|
|
assert len(resp.daten) > 0
|
|
# test without filters
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert status.code == 0
|
|
assert len(resp.daten) > 0
|
|
# close connection
|
|
resp, status = session.logout()
|
|
assert status.code == 0
|
|
|
|
|
|
@pytest.mark.api_con_required
|
|
def test_get_sales_prognosis_data_NoAuth(session, mock_get):
|
|
code = 401
|
|
json = {
|
|
"message": "ServerError",
|
|
"code": "TestFailAuth",
|
|
"hints": "TestCase",
|
|
}
|
|
mock_get.return_value.status_code = code
|
|
mock_get.return_value.json.return_value = json
|
|
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert resp is not None
|
|
assert len(resp.daten) == 0
|
|
assert status.code == 400
|
|
assert status.api_server_error is not None
|
|
assert status.api_server_error.status_code == code
|
|
assert status.api_server_error.message == json["message"]
|
|
assert status.api_server_error.code == json["code"]
|
|
assert status.api_server_error.hints == json["hints"]
|
|
|
|
|
|
def test_get_sales_prognosis_data_FailLogin(session, mock_get, mock_put):
|
|
code = 401
|
|
json = {
|
|
"message": "ServerError",
|
|
"code": "TestFailAuth",
|
|
"hints": "TestCase",
|
|
}
|
|
mock_get.return_value.status_code = code
|
|
mock_get.return_value.json.return_value = json
|
|
|
|
code_put = 500
|
|
json_put = {
|
|
"message": "ServerError",
|
|
"code": "TestUnknownError",
|
|
"hints": "TestCase",
|
|
}
|
|
mock_put.return_value.status_code = code_put
|
|
mock_put.return_value.json.return_value = json_put
|
|
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert resp is not None
|
|
assert len(resp.daten) == 0
|
|
assert status.code == 400
|
|
assert status.api_server_error is not None
|
|
assert status.api_server_error.status_code == code_put
|
|
assert status.api_server_error.message == json_put["message"]
|
|
assert status.api_server_error.code == json_put["code"]
|
|
assert status.api_server_error.hints == json_put["hints"]
|
|
|
|
|
|
@pytest.mark.api_con_required
|
|
def test_get_sales_prognosis_data_FailApiServer(session, mock_get):
|
|
code = 405
|
|
json = {
|
|
"message": "ServerError",
|
|
"code": "TestExternalServerError",
|
|
"hints": "TestCase",
|
|
}
|
|
mock_get.return_value.status_code = code
|
|
mock_get.return_value.json.return_value = json
|
|
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert resp is not None
|
|
assert len(resp.daten) == 0
|
|
assert status.code == 400
|
|
assert status.api_server_error is not None
|
|
assert status.api_server_error.status_code == code
|
|
assert status.api_server_error.message == json["message"]
|
|
assert status.api_server_error.code == json["code"]
|
|
assert status.api_server_error.hints == json["hints"]
|
|
|
|
|
|
def test_get_sales_prognosis_data_FailGetTimeout(session, mock_get):
|
|
mock_get.side_effect = requests.exceptions.Timeout("Test timeout")
|
|
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert resp is not None
|
|
assert len(resp.daten) == 0
|
|
assert status.code == 1
|
|
|
|
|
|
def test_get_sales_prognosis_data_FailGetRequestException(session, mock_get):
|
|
mock_get.side_effect = requests.exceptions.RequestException("Test not timeout")
|
|
|
|
resp, status = requests_.get_sales_prognosis_data(session, None, None)
|
|
assert resp is not None
|
|
assert len(resp.daten) == 0
|
|
assert status.code == 2
|