Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: TT-417 add missing tests
  • Loading branch information
Jobzi committed Nov 25, 2021
commit 4057a106d0c3a388a689922f294f65e2dec1b23f
120 changes: 105 additions & 15 deletions V2/tests/api/azure/project_azure_endpoints_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from time_tracker.projects._application import _projects as azure_projects
from time_tracker.projects import _domain as domain
from time_tracker.projects import _infrastructure as infrastructure
from time_tracker.utils.enums import ResponseEnums as enums

PROJECT_URL = '/api/projects/'

Expand Down Expand Up @@ -35,7 +36,7 @@ def test__project_azure_endpoint__returns_all_projects(
response = azure_projects._get_projects.get_projects(req)
projects_json_data = response.get_body().decode("utf-8")

assert response.status_code == 200
assert response.status_code == enums.STATUS_OK.value
assert projects_json_data == json.dumps(inserted_projects)


Expand All @@ -54,7 +55,7 @@ def test__project_azure_endpoint__returns_an_project__when_project_matches_its_i
response = azure_projects._get_projects.get_projects(req)
activitiy_json_data = response.get_body().decode("utf-8")

assert response.status_code == 200
assert response.status_code == enums.STATUS_OK.value
assert activitiy_json_data == json.dumps(inserted_project)


Expand All @@ -69,11 +70,11 @@ def test__projects_azure_endpoint__returns_a_status_code_400__when_project_reciv

response = azure_projects._get_projects.get_projects(req)

assert response.status_code == 400
assert response.get_body() == b'Invalid Format ID'
assert response.status_code == enums.STATUS_BAD_REQUEST.value
assert response.get_body() == enums.INVALID_ID.value.encode()


def test__project_azure_endpoint__returns_an_project_with_inactive_status__when_an_project_matching_its_id_is_found(
def test__project_azure_endpoint__returns_an_project_with_inactive_status__when_a_project_matching_its_id_is_found(
insert_project
):
inserted_project = insert_project().__dict__
Expand All @@ -88,7 +89,7 @@ def test__project_azure_endpoint__returns_an_project_with_inactive_status__when_
response = azure_projects._delete_project.delete_project(req)
project_json_data = json.loads(response.get_body().decode("utf-8"))

assert response.status_code == 200
assert response.status_code == enums.STATUS_OK.value
assert project_json_data['status'] == 0
assert project_json_data['deleted'] is True

Expand All @@ -104,11 +105,26 @@ def test__delete_projects_azure_endpoint__returns_a_status_code_400__when_projec

response = azure_projects._delete_project.delete_project(req)

assert response.status_code == 400
assert response.get_body() == b'Invalid Format ID'
assert response.status_code == enums.STATUS_BAD_REQUEST.value
assert response.get_body() == enums.INVALID_ID.value.encode()


def test__update_project_azure_endpoint__returns_an_project__when_found_an_project_to_update(
def test__delete_projects_azure_endpoint__returns_a_status_code_404__when_no_found_a_project_to_delete(
):
req = func.HttpRequest(
method="DELETE",
body=None,
url=PROJECT_URL,
route_params={"id": Faker().pyint()},
)

response = azure_projects._delete_project.delete_project(req)

assert response.status_code == enums.STATUS_NOT_FOUND.value
assert response.get_body() == enums.NOT_FOUND.value.encode()


def test__update_project_azure_endpoint__returns_an_project__when_found_a_project_to_update(
insert_project
):
inserted_project = insert_project().__dict__
Expand All @@ -125,10 +141,44 @@ def test__update_project_azure_endpoint__returns_an_project__when_found_an_proje
activitiy_json_data = response.get_body().decode("utf-8")
inserted_project.update(project_body)

assert response.status_code == 200
assert response.status_code == enums.STATUS_OK.value
assert activitiy_json_data == json.dumps(inserted_project)


def test__update_projects_azure_endpoint__returns_a_status_code_404__when_no_found_a_project_to_update(
project_factory
):
project_body = project_factory().__dict__

req = func.HttpRequest(
method="PUT",
body=json.dumps(project_body).encode("utf-8"),
url=PROJECT_URL,
route_params={"id": Faker().pyint()},
)

response = azure_projects._update_project.update_project(req)

assert response.status_code == enums.STATUS_NOT_FOUND.value
assert response.get_body() == enums.NOT_FOUND.value.encode()


def test__update_projects_azure_endpoint__returns_a_status_code_400__when_recive_an_incorrect_body(
):
project_body = Faker().pydict(5, True, str)
req = func.HttpRequest(
method="PUT",
body=json.dumps(project_body).encode("utf-8"),
url=PROJECT_URL,
route_params={"id": Faker().pyint()},
)

response = azure_projects._update_project.update_project(req)

assert response.status_code == enums.STATUS_BAD_REQUEST.value
assert response.get_body() == enums.INCORRECT_BODY.value.encode()


def test__update_projects_azure_endpoint__returns_a_status_code_400__when_project_recive_invalid_id(
):
req = func.HttpRequest(
Expand All @@ -140,15 +190,15 @@ def test__update_projects_azure_endpoint__returns_a_status_code_400__when_projec

response = azure_projects._update_project.update_project(req)

assert response.status_code == 400
assert response.get_body() == b'Invalid Format ID'
assert response.status_code == enums.STATUS_BAD_REQUEST.value
assert response.get_body() == enums.INVALID_ID.value.encode()


def test__project_azure_endpoint__creates_an_project__when_project_has_all_attributes(
test_db, project_factory, insert_customer, customer_factory
):
inserted_customer = insert_customer(customer_factory(), test_db)
project_body = project_factory(customer_id=inserted_customer.id).__dict__
insert_customer(customer_factory(), test_db)
project_body = project_factory().__dict__
body = json.dumps(project_body).encode("utf-8")
req = func.HttpRequest(
method='POST',
Expand All @@ -160,5 +210,45 @@ def test__project_azure_endpoint__creates_an_project__when_project_has_all_attri
project_json_data = json.loads(response.get_body())
project_body['id'] = project_json_data['id']

assert response.status_code == 201
assert response.status_code == enums.STATUS_CREATED.value
assert project_json_data == project_body


def test__project_azure_endpoint__returns_a_status_code_400__when_project_does_not_all_attributes(
test_db, project_factory, insert_customer, customer_factory
):
inserted_customer = insert_customer(customer_factory(), test_db)
project_body = project_factory(customer_id=inserted_customer.id).__dict__
project_body.pop('name')

body = json.dumps(project_body).encode("utf-8")
req = func.HttpRequest(
method='POST',
body=body,
url=PROJECT_URL,
)

response = azure_projects._create_project.create_project(req)

assert response.status_code == enums.STATUS_BAD_REQUEST.value
assert response.get_body() == json.dumps(['The name key is missing in the input data']).encode()


def test__project_azure_endpoint__returns_a_status_code_500__when_project_recive_incorrect_type_data(
project_factory, insert_customer, customer_factory, test_db
):
insert_customer(customer_factory(), test_db)
project_body = project_factory(technologies=Faker().pylist(2, True, str)).__dict__

body = json.dumps(project_body).encode("utf-8")
print(project_body)
req = func.HttpRequest(
method='POST',
body=body,
url=PROJECT_URL,
)

response = azure_projects._create_project.create_project(req)

assert response.status_code == enums.INTERNAL_SERVER_ERROR.value
assert response.get_body() == enums.NOT_CREATED.value.encode()
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@

from ... import _domain
from ... import _infrastructure
from time_tracker._infrastructure import DB
from time_tracker._infrastructure import DB as database
from time_tracker.utils.enums import ResponseEnums as enums


def create_project(req: func.HttpRequest) -> func.HttpResponse:
database = DB()
project_dao = _infrastructure.ProjectsSQLDao(database)

project_dao = _infrastructure.ProjectsSQLDao(database())
project_service = _domain.ProjectService(project_dao)
use_case = _domain._use_cases.CreateProjectUseCase(project_service)

Expand All @@ -37,7 +37,7 @@ def create_project(req: func.HttpRequest) -> func.HttpResponse:
created_project = use_case.create_project(project_to_create)

status_code, response = [
enums.INTERNAL_SERVER_ERROR.value, json.dumps({'error': f'project {enums.NOT_CREATED.value}'})
enums.INTERNAL_SERVER_ERROR.value, enums.NOT_CREATED.value.encode()
] if not created_project else [enums.STATUS_CREATED.value, json.dumps(created_project.__dict__)]

return func.HttpResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def update_project(req: func.HttpRequest) -> func.HttpResponse:

if not _validate_project(project_data):
status_code = enums.STATUS_BAD_REQUEST.value
response = bytes(f"{enums.INCORRECT_BODY.value} project")
response = enums.INCORRECT_BODY.value.encode()

else:
updated_project = use_case.update_project(project_id, project_data)
Expand Down