def domain_time_entries(): return [ TimeEntry( code=uuid.uuid4(), project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("09:00:00"), end_date=time.fromisoformat("10:00:00"), description="Time Tracker CLI developments", ), TimeEntry( code=uuid.uuid4(), project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("10:00:00"), end_date=time.fromisoformat("11:00:00"), description="Time Tracker CLI developments", ), TimeEntry( code=uuid.uuid4(), project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("11:00:00"), end_date=time.fromisoformat("12:00:00"), description="Time Tracker CLI developments", ), TimeEntry( code=uuid.uuid4(), project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("12:00:00"), end_date=time.fromisoformat("13:00:00"), description="Time Tracker CLI developments", ), ]
def test_domain_time_entry__return_true__when_two_equal_models_are_compared(): code = uuid.uuid4() init_dict = { "code": code, "project": "ioet Inc. - ioet-internal", "start_date": time.fromisoformat("09:00:00"), "end_date": time.fromisoformat("10:00:00"), "description": "Time Tracker CLI developments", } first_time_entry = TimeEntry.from_dict(init_dict) second_time_entry = TimeEntry.from_dict(init_dict) assert first_time_entry == second_time_entry
def list(self, filters=None): result = [TimeEntry.from_dict(time_entry) for time_entry in self.data] if filters is None: return result if "code__eq" in filters: result = [ time_entry for time_entry in result if time_entry.code == filters["code__eq"] ] if "project__eq" in filters: result = [ time_entry for time_entry in result if time_entry.project == filters["project__eq"] ] if "start_date__lt" in filters: result = [ time_entry for time_entry in result if time.fromisoformat(time_entry.start_date) < time.fromisoformat(str(filters["start_date__lt"])) ] if "start_date__gt" in filters: result = [ time_entry for time_entry in result if time.fromisoformat(time_entry.start_date) > time.fromisoformat(str(filters["start_date__gt"])) ] return result
def test_repository_memrepo__return_a_time_entry_list__when_call_repo_list_without_parameters( time_entries_dict, ): repo = MemRepo(time_entries_dict) time_entries = [ TimeEntry.from_dict(time_entry) for time_entry in time_entries_dict ] assert repo.list() == time_entries
def test_domain_time_entry__set_and_get_time_entry_start_date_attribute__when_calling_start_date_setter_and_getter(): code = uuid.uuid4() time_entry: TimeEntry = TimeEntry( code, project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("14:00:00"), end_date=None, description="Time Tracker CLI developments", ) assert "14:00:00" == str(time_entry.start_date).split(".", 1)[0]
def test_domain_time_entry__returns_the_difference_between_start_date_and_end_date__when_calling_get_time_entry_function(): code = uuid.uuid4() time_entry: TimeEntry = TimeEntry( code, project="ioet Inc. - ioet-internal", start_date=datetime.now(), end_date=datetime.now() + timedelta(hours=1), description="Time Tracker CLI developments", ) assert "1:00:00" == str(time_entry.get_time_entry()).split(".", 1)[0]
def clock_in(): code = uuid.uuid4() time_entry: TimeEntry = TimeEntry( code, project="ioet Inc. - ioet-internal", start_date=datetime.now(), end_date=None, description="Time Tracker CLI developments", ) return f"You start a time entry at {time_entry.start_date}"
def clock_in(): """Clock in a time entry""" code = uuid.uuid4() time_entry: TimeEntry = TimeEntry( code, project="ioet Inc. - ioet-internal", start_date=datetime.now(), end_date=None, description="Time Tracker CLI developments" ) click.echo(f"You start a time entry at {str(time_entry.start_date).split('.', 1)[0]}")
def test_domain_time_entry__create_a_dictionary__when_to_dict_function_is_called(): code = uuid.uuid4() init_dict = { "code": code, "project": "ioet Inc. - ioet-internal", "start_date": time.fromisoformat("09:00:00"), "end_date": time.fromisoformat("10:00:00"), "description": "Time Tracker CLI developments", } time_entry = TimeEntry.from_dict(init_dict) assert time_entry.to_dict() == init_dict
def test_domain_time_entry__create_a_time_entry__when_model_init(): code = uuid.uuid4() time_entry = TimeEntry( code, project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("09:00:00"), end_date=time.fromisoformat("10:00:00"), description="Time Tracker CLI developments", ) assert time_entry.code == code assert time_entry.project == "ioet Inc. - ioet-internal" assert str(time_entry.start_date).split(".", 1)[0] == "09:00:00" assert str(time_entry.end_date).split(".", 1)[0] == "10:00:00" assert time_entry.description == "Time Tracker CLI developments"
def test_domain_time_entry__create_a_time_entry__when_passing_a_model_as_a_dictionary(): code = uuid.uuid4() init_dict = { "code": code, "project": "ioet Inc. - ioet-internal", "start_date": time.fromisoformat("09:00:00"), "end_date": time.fromisoformat("10:00:00"), "description": "Time Tracker CLI developments", } time_entry = TimeEntry.from_dict(init_dict) assert time_entry.code == code assert time_entry.project == "ioet Inc. - ioet-internal" assert str(time_entry.start_date).split(".", 1)[0] == "09:00:00" assert str(time_entry.end_date).split(".", 1)[0] == "10:00:00" assert time_entry.description == "Time Tracker CLI developments"
def test_serializers__return_time_entry_serialized__when_call_time_entry_json_encoder(): code = uuid.uuid4() time_entry = TimeEntry( code=code, project="ioet Inc. - ioet-internal", start_date=time.fromisoformat("09:00:00"), end_date=time.fromisoformat("10:00:00"), description="Time Tracker CLI developments", ) expected_json = f""" {{ "code": "{code}", "project": "ioet Inc. - ioet-internal", "start_date": "09:00:00", "end_date": "10:00:00", "description": "Time Tracker CLI developments" }} """ json_time_entry = json.dumps(time_entry, cls=TimeEntryJsonEncoder) assert json.loads(json_time_entry) == json.loads(expected_json)
def list_time_entries(): click.echo([TimeEntry.to_dict(time_entry) for time_entry in time_entry_list_use_case(repo)])
import json from tt.domain.time_entry import TimeEntry from tt.responses.response import ResponseSuccess time_entry_dict = { "code": "db2904b5-3fc0-4780-b7a8-26d688e088a2", "project": "ioet Inc. - ioet-internal", "start_date": "09:00:00", "end_date": "10:00:00", "description": "Time Tracker CLI developments", } time_entries = [TimeEntry.from_dict(time_entry_dict)] def test_time_entry__return_time_entries__when_call_get_time_entries_method( mocker, client ): mock_use_case = mocker.patch("application.rest.time_entry.time_entry_list_use_case") mock_use_case.return_value = ResponseSuccess(time_entries) http_response = client.get("/time-entries?filter_start_date__gt=08:00:00&filter_end_date__lt=11:00:00") assert json.loads(http_response.data.decode("UTF-8")) == [time_entry_dict] mock_use_case.assert_called() args, kwargs = mock_use_case.call_args assert args[1].filters == {"start_date__gt": "08:00:00", "end_date__lt": "11:00:00"} assert http_response.status_code == 200 assert http_response.mimetype == "application/json"