Skip to content
Closed
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
feat: TT-425-time-entries-summary
  • Loading branch information
jer8856 committed Dec 2, 2021
commit 8347c42386f5990d4feea100929d2877caecf138
25 changes: 7 additions & 18 deletions V2/tests/api/azure/time_entry_azure_endpoints_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,44 +297,33 @@ def test__time_entry_azure_endpoint__returns_the_summary(
)

response = azure_time_entries.get_time_entries_summary(req)

time_entries_obtained = response.get_body().decode("utf-8")
assert response.status_code == HTTPStatus.OK
assert response.status_code == HTTPStatus.OK.value
assert json.loads(time_entries_obtained) == [inserted_time_entries]


def test__time_entry_summary_azure_endpoint__returns_not_found_with_invalid_owner_id(
test_db, insert_activity, activity_factory
):

insert_activity(activity_factory(), test_db)

request_params = {
"method": 'GET',
"body": None,
"url": TIME_ENTRY_SUMMARY_URL,
"params": {"owner_id": 96},
}
req_owner_id = func.HttpRequest(**request_params)
"params": {"owner_id": Faker().pyint()}
}

req_owner_id = func.HttpRequest(**request_params)
response_owner_id = azure_time_entries._get_time_entries_summary.get_time_entries_summary(req_owner_id)

assert response_owner_id.status_code == HTTPStatus.NOT_FOUND
assert response_owner_id.status_code == HTTPStatus.NOT_FOUND.value
assert response_owner_id.get_body().decode() == ResponseEnums.NOT_FOUND.value

request_params["params"] = {"owner_id": 69, "start_date": "", "end_date": "11/11/2021"}
req_start_date = func.HttpRequest(**request_params)

response_start_date = azure_time_entries._get_time_entries_summary.get_time_entries_summary(req_start_date)

assert response_start_date.status_code == HTTPStatus.NOT_FOUND
assert response_start_date.get_body().decode() == ResponseEnums.NOT_FOUND.value


def test__time_entry_summary_azure_endpoint__returns_invalid_date_format_with_invalid_date_format(
test_db, insert_activity, activity_factory
):

insert_activity(activity_factory(), test_db)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the purpose of creating an activity if it is not used


wrong_date_format = "30/11/2021"
Expand All @@ -350,13 +339,13 @@ def test__time_entry_summary_azure_endpoint__returns_invalid_date_format_with_in
req_owner_id = func.HttpRequest(**request_params)
response_owner_id = azure_time_entries._get_time_entries_summary.get_time_entries_summary(req_owner_id)

assert response_owner_id.status_code == HTTPStatus.NOT_FOUND
assert response_owner_id.status_code == HTTPStatus.NOT_FOUND.value
assert response_owner_id.get_body().decode() == ResponseEnums.INVALID_DATE_FORMAT.value

request_params["params"] = {"owner_id": 1, "start_date": right_date_format, "end_date": wrong_date_format}
req_start_date = func.HttpRequest(**request_params)

response_start_date = azure_time_entries._get_time_entries_summary.get_time_entries_summary(req_start_date)

assert response_start_date.status_code == HTTPStatus.NOT_FOUND
assert response_start_date.status_code == HTTPStatus.NOT_FOUND.value
assert response_start_date.get_body().decode() == ResponseEnums.INVALID_DATE_FORMAT.value
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ def get_time_entries_summary(req: func.HttpRequest) -> func.HttpResponse:
return func.HttpResponse(**response_params)


def _validate_time_format(time: str, format: str = "%m/%d/%Y"):
def _validate_time_format(time: str) -> bool:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

perhaps this functionality can be implemented globally

try:
datetime.datetime.strptime(time, format)
datetime.datetime.strptime(time, "%m/%d/%Y")
except ValueError:
return False
return True
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from time_tracker.time_entries._domain import TimeEntry, TimeEntryService
import typing

from time_tracker.time_entries._domain import TimeEntry, TimeEntryService


class GetTimeEntriesSummaryUseCase:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

import sqlalchemy
import sqlalchemy.sql as sql
# from sqlalchemy import func

import time_tracker.time_entries._domain as domain
from time_tracker._infrastructure import _db
Expand Down Expand Up @@ -106,8 +105,7 @@ def get_latest_entries(self, owner_id: int, limit: int = 20) -> typing.List[doma
list_time_entries = [dict(entry) for entry in time_entries_data]
return list_time_entries if len(list_time_entries) > 0 else None

def get_time_entries_summary(self, owner_id: int, start_date: str, end_date: str,
format: str = "%m/%d/%Y") -> typing.List[domain.TimeEntry]:
def get_time_entries_summary(self, owner_id: int, start_date: str, end_date: str) -> typing.List[domain.TimeEntry]:
query = (
self.time_entry.select()
.where(sqlalchemy.and_(self.time_entry.c.owner_id == owner_id,
Expand Down