Organized
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from redmine_ticket_meta import (
|
||||
normalize_name,
|
||||
resolve_id_by_name,
|
||||
users_from_memberships,
|
||||
)
|
||||
from redmine_ticket_contacts import (
|
||||
ContactCache,
|
||||
contact_display_name,
|
||||
filter_contacts,
|
||||
primary_email,
|
||||
)
|
||||
from redmine_tickets import build_fields_payload_from_args, build_parser, inject_default_sync_command
|
||||
|
||||
|
||||
class MetaResolveTest(unittest.TestCase):
|
||||
def test_resolve_status(self):
|
||||
statuses = [{"id": 1, "name": "New"}, {"id": 5, "name": "Closed"}]
|
||||
self.assertEqual(5, resolve_id_by_name(statuses, "closed"))
|
||||
self.assertEqual(5, resolve_id_by_name(statuses, "5"))
|
||||
|
||||
def test_users_from_memberships(self):
|
||||
users = users_from_memberships(
|
||||
[
|
||||
{"user": {"id": 2, "name": "Jason T.", "login": "jason"}},
|
||||
{"user": {"id": 2, "name": "Jason T."}},
|
||||
{"group": {"id": 9, "name": "CS"}},
|
||||
]
|
||||
)
|
||||
self.assertEqual(1, len(users))
|
||||
self.assertEqual(2, resolve_id_by_name(users, "jason", name_keys=("name", "login")))
|
||||
|
||||
def test_set_fields_name_cli_parse(self):
|
||||
args = build_parser().parse_args(
|
||||
inject_default_sync_command(
|
||||
[
|
||||
"--project",
|
||||
"customer-service",
|
||||
"set-fields",
|
||||
"--issue-id",
|
||||
"1",
|
||||
"--status",
|
||||
"Closed",
|
||||
"--assigned-to",
|
||||
"unassigned",
|
||||
]
|
||||
)
|
||||
)
|
||||
self.assertEqual("Closed", args.status_name)
|
||||
self.assertEqual("unassigned", args.assignee_name)
|
||||
# build with resolved
|
||||
payload = build_fields_payload_from_args(
|
||||
args,
|
||||
resolved_ids={"status_id": 5, "assigned_to_id": 0},
|
||||
)
|
||||
self.assertEqual(5, payload["status_id"])
|
||||
self.assertIsNone(payload["assigned_to_id"])
|
||||
|
||||
|
||||
class ContactsCacheTest(unittest.TestCase):
|
||||
def test_write_filter(self):
|
||||
with tempfile.TemporaryDirectory() as td:
|
||||
cache = ContactCache(Path(td))
|
||||
cache.write_contact(
|
||||
{
|
||||
"id": 7,
|
||||
"name": "Ada Lovelace",
|
||||
"email": "ada@example.com",
|
||||
"company": "Analytical Engines",
|
||||
"updated_on": "2026-07-01T00:00:00Z",
|
||||
"tag_list": ["customer", "vip"],
|
||||
}
|
||||
)
|
||||
loaded = cache.load_contact(7)
|
||||
self.assertEqual("Ada Lovelace", contact_display_name(loaded))
|
||||
self.assertEqual("ada@example.com", primary_email(loaded))
|
||||
allc = list(cache.iter_contacts())
|
||||
hits = filter_contacts(allc, query="analytical", tag="customer")
|
||||
self.assertEqual(1, len(hits))
|
||||
self.assertFalse(cache.should_fetch({"id": 7, "updated_on": "2026-07-01T00:00:00Z"}))
|
||||
self.assertTrue(cache.should_fetch({"id": 7, "updated_on": "2026-07-02T00:00:00Z"}))
|
||||
|
||||
|
||||
class NormalizeTest(unittest.TestCase):
|
||||
def test_normalize(self):
|
||||
self.assertEqual("jason t.", normalize_name(" Jason T. "))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user