Release v0.1.2
This commit is contained in:
68
tests/test_imap_parser.py
Normal file
68
tests/test_imap_parser.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from govoplan_mail.backend.sending.imap import (
|
||||
_detect_sent_folder,
|
||||
_extract_mailbox_name,
|
||||
_paged_descending_sequences,
|
||||
_parse_fetch_sequence,
|
||||
_sequence_set,
|
||||
)
|
||||
|
||||
|
||||
class ImapFolderParserTests(unittest.TestCase):
|
||||
def test_extracts_quoted_mailbox_after_quoted_delimiter(self):
|
||||
self.assertEqual(
|
||||
_extract_mailbox_name(b'(\\HasNoChildren \\Sent) "/" "Sent Items"'),
|
||||
("Sent Items", {"\\hasnochildren", "\\sent"}),
|
||||
)
|
||||
|
||||
def test_extracts_atom_mailbox(self):
|
||||
self.assertEqual(
|
||||
_extract_mailbox_name('(\\HasNoChildren) "/" INBOX'),
|
||||
("INBOX", {"\\hasnochildren"}),
|
||||
)
|
||||
|
||||
def test_extracts_nil_delimiter_mailbox(self):
|
||||
self.assertEqual(
|
||||
_extract_mailbox_name('(\\HasNoChildren) NIL "INBOX.Sent"'),
|
||||
("INBOX.Sent", {"\\hasnochildren"}),
|
||||
)
|
||||
|
||||
def test_detects_sent_by_flag_before_name(self):
|
||||
self.assertEqual(
|
||||
_detect_sent_folder([("Archive", {"\\sent"}), ("Sent", set())]),
|
||||
"Archive",
|
||||
)
|
||||
|
||||
def test_detects_common_sent_name(self):
|
||||
self.assertEqual(
|
||||
_detect_sent_folder([("INBOX", set()), ("Gesendet", set())]),
|
||||
"Gesendet",
|
||||
)
|
||||
|
||||
|
||||
class ImapMessagePaginationTests(unittest.TestCase):
|
||||
def test_paginates_sequence_numbers_newest_first(self):
|
||||
self.assertEqual(
|
||||
_paged_descending_sequences(120, offset=0, limit=5),
|
||||
["120", "119", "118", "117", "116"],
|
||||
)
|
||||
self.assertEqual(_paged_descending_sequences(120, offset=118, limit=5), ["2", "1"])
|
||||
self.assertEqual(_paged_descending_sequences(120, offset=120, limit=5), [])
|
||||
|
||||
def test_compacts_contiguous_sequence_sets(self):
|
||||
self.assertEqual(_sequence_set(["5", "4", "3"]), "3:5")
|
||||
self.assertEqual(_sequence_set(["9", "7", "5"]), "5,7,9")
|
||||
|
||||
def test_extracts_fetch_sequence_number(self):
|
||||
self.assertEqual(
|
||||
_parse_fetch_sequence("42 (UID 123 FLAGS (\\Seen) RFC822.SIZE 100)"),
|
||||
"42",
|
||||
)
|
||||
self.assertIsNone(_parse_fetch_sequence("UID 123 FLAGS ()"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user