Exemplo n.º 1
0
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",
        ),
    ]
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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]
Exemplo n.º 6
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]
Exemplo n.º 7
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}"
Exemplo n.º 8
0
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]}")
Exemplo n.º 9
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
Exemplo n.º 10
0
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"
Exemplo n.º 11
0
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"
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
def list_time_entries():
    click.echo([TimeEntry.to_dict(time_entry) for time_entry in time_entry_list_use_case(repo)])
Exemplo n.º 14
0
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"