Exemplo n.º 1
0
def test_fetch_last_emails(mocker, since_datetime, filter_arg,
                           expected_result):
    """
    Given:
        - First fetch timestamp - no last_run
        - Not the first time fetching - last_run with a date

    When:
        - Fetching last emails

    Then:
        - Verify last_modified_time__gte is ten minutes earlier
        - Verify datetime_received__gte according to the datetime received
    """
    class MockObject:
        def filter(self,
                   last_modified_time__gte='',
                   datetime_received__gte=''):
            return MockObject2()

    class MockObject2:
        def filter(self):
            return MockObject2()

        def only(self, *args):
            return self

        def order_by(self, *args):
            return [Message(), Message(), Message(), Message(), Message()]

    def mock_get_folder_by_path(path, account=None, is_public=False):
        return MockObject()

    client = TestNormalCommands.MockClient()
    client.get_folder_by_path = mock_get_folder_by_path
    mocker.patch.object(MockObject, 'filter')

    fetch_last_emails(client, since_datetime=since_datetime)
    assert MockObject.filter.call_args[1].get(filter_arg) == expected_result
Exemplo n.º 2
0
def test_fetch_last_emails_max_fetch(max_fetch, expected_result):
    """
    Given:
        - Max fetch is 6
        - Max fetch is 2
        - Max fetch is 5

    When:
        - Fetching last emails - need to make sure to return emails according to the max_fetch param.

    Then:
        - Return 5 emails (Cause we only have 5 emails)
        - Return 2 emails
        - Return 5 emails
    """
    class MockObject:
        def filter(self,
                   last_modified_time__gte='',
                   datetime_received__gte=''):
            return MockObject2()

    class MockObject2:
        def filter(self):
            return MockObject2()

        def only(self, *args):
            return self

        def order_by(self, *args):
            # Return a list of emails
            return [Message(), Message(), Message(), Message(), Message()]

    def mock_get_folder_by_path(path, account=None, is_public=False):
        return MockObject()

    client = TestNormalCommands.MockClient()
    client.max_fetch = max_fetch
    client.get_folder_by_path = mock_get_folder_by_path

    emails = fetch_last_emails(client, since_datetime='')
    assert len(emails) == expected_result