Skip to content

Commit

Permalink
test: delete stale filter and adapter tests
Browse files Browse the repository at this point in the history
  • Loading branch information
aidencullo committed May 7, 2024
1 parent a6f575f commit f252759
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 53 deletions.
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7.18
3.12
5 changes: 3 additions & 2 deletions src/nomail/adapter.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
from email.message import Message
from typing import Optional

from . import imap
from .email import Email
from .emaillist import EmailList
from .email_filter import Filter
from .email_filter import Filter, NullFilter


class EmailImapAdapter(imap.Imap):
def __init__(self):
super().__init__()

def apply(self, email_filter: Filter, rate_limit: int = 1) -> EmailList:
def apply(self, email_filter: Optional[Filter] = None, rate_limit: int = 1) -> EmailList:
return self.get_emails().limit(rate_limit).filter(email_filter)

def get_emails(self) -> EmailList:
Expand Down
5 changes: 5 additions & 0 deletions src/nomail/email_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@ def __init__(self, address_list: Optional[list[str]] = None):

def apply(self, email: Email) -> bool:
return email.sender in self._address_list


class NullFilter(Filter):
def apply(self, email: Email) -> bool:
return email.sender
50 changes: 15 additions & 35 deletions tests/unit/adapter_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,26 @@
import pytest

from nomail.adapter import EmailImapAdapter
from nomail.email_filter import NullFilter
from nomail.emaillist import EmailList


class TestAdapter:
@pytest.mark.skip(reason="Skipping this CLASS level test")
@patch("nomail.adapter.EmailImapAdapter.__init__", return_value=None)
@patch("nomail.adapter.EmailImapAdapter.get_emails")
def test_apply(self, get_emails_mock, imap_mock, email_list_mock):

# Arrange
get_emails_mock.return_value = email_list_mock
test = Mock(return_value=True)
email_filter_mock = Mock(test=test)
adapter_mock = EmailImapAdapter()

filtered_emails = adapter_mock.apply(email_filter_mock)

assert filtered_emails == expected_emails
@pytest.fixture(name="adapter")
def adapter():
return EmailImapAdapter()

@pytest.mark.skip(reason="Skipping this CLASS level test")
@patch("nomail.adapter.super")
def test_delete_msg(self, super_mock):

# Arrange
adapter_mock = EmailImapAdapter()
@pytest.fixture(name="empty_list")
def empty_list():
return EmailList([])

# Act
adapter_mock.delete_msg(Mock())

# Assert
assert super_mock.called

@pytest.mark.skip(reason="Skipping this CLASS level test")
@patch("nomail.adapter.super")
def test_copy_msg(self, super_mock):

# Arrange
adapter_mock = EmailImapAdapter()
class TestAdapter:
@patch("nomail.adapter.EmailImapAdapter.get_emails")
def test_apply(self, get_emails, adapter, empty_list):
get_emails.return_value = empty_list
expected_emails = empty_list

# Act
adapter_mock.copy_msg(Mock())
filtered_emails = adapter.apply(NullFilter())

# Assert
assert super_mock.called
assert filtered_emails == expected_emails
21 changes: 6 additions & 15 deletions tests/unit/email_filter_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,18 @@
from nomail.email_filter import ListFilter


def email_mock_factory(sender):
def email_mock_factory():
mock = Mock()
mock.sender = sender
mock.sender = ''
return mock


@pytest.fixture(name="list_filter_mock")
def fixture_list_filter(sender_dummy):
senders = ['person1', 'person2']
return EmailFilterList(senders)


@pytest.mark.skip(reason="Skipping this CLASS level test")
@pytest.mark.parametrize(
('sender', 'expected'),
(
(email_mock_factory('person1'), True),
(email_mock_factory('person2'), True),
(email_mock_factory('person3'), False),
(email_mock_factory(''), False),
(email_mock_factory(), False),
),
)
def test_email_filter_list(sender, expected, email_filter_mock):
assert email_filter_mock.apply(sender) == expected
def test_filter_list(sender, expected):
ListFilterMock = ListFilter()
assert ListFilterMock.apply(sender) == expected

0 comments on commit f252759

Please sign in to comment.