Organized
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from redmine_ticket_contacts import contact_id_from_issue
|
||||
from redmine_ticket_drafts import KIND_CONTACT_FIELDS, add_draft, kind_label, load_draft, normalize_kind
|
||||
from redmine_tickets import apply_draft_to_redmine, build_parser, inject_default_sync_command
|
||||
|
||||
|
||||
class ContactBridgeTest(unittest.TestCase):
|
||||
def test_contact_id_from_issue(self):
|
||||
self.assertEqual(
|
||||
99,
|
||||
contact_id_from_issue({"helpdesk_ticket": {"contact_id": 99}}),
|
||||
)
|
||||
self.assertEqual(
|
||||
7,
|
||||
contact_id_from_issue({"helpdesk_ticket": {"contact": {"id": 7, "email": "a@b.c"}}}),
|
||||
)
|
||||
self.assertIsNone(contact_id_from_issue({"subject": "x"}))
|
||||
|
||||
|
||||
class ContactDraftTest(unittest.TestCase):
|
||||
def test_kind(self):
|
||||
self.assertEqual(KIND_CONTACT_FIELDS, normalize_kind("contact_fields"))
|
||||
self.assertIn("CONTACT UPDATE", kind_label(KIND_CONTACT_FIELDS))
|
||||
|
||||
def test_queue_and_apply_mock(self):
|
||||
with tempfile.TemporaryDirectory() as td:
|
||||
path = add_draft(
|
||||
Path(td),
|
||||
contact_id=42,
|
||||
kind=KIND_CONTACT_FIELDS,
|
||||
fields={"tag_list": ["maybe-customer"], "company": "Acme"},
|
||||
base_url="http://192.168.50.170",
|
||||
)
|
||||
_p, draft = load_draft(Path(td), path.stem)
|
||||
self.assertEqual(42, draft["contact_id"])
|
||||
self.assertIsNone(draft["issue_id"])
|
||||
client = MagicMock()
|
||||
result = apply_draft_to_redmine(
|
||||
client,
|
||||
draft,
|
||||
impersonate_user="rebot",
|
||||
allow_customer_email=False,
|
||||
)
|
||||
client.update_contact.assert_called_once()
|
||||
self.assertEqual(42, result["contact_id"])
|
||||
self.assertFalse(result["emailed_customer"])
|
||||
|
||||
def test_cli_parse(self):
|
||||
args = build_parser().parse_args(
|
||||
inject_default_sync_command(
|
||||
[
|
||||
"--project",
|
||||
"customer-service",
|
||||
"contact-set",
|
||||
"--contact-id",
|
||||
"14",
|
||||
"--add-tag",
|
||||
"maybe-customer",
|
||||
"--company",
|
||||
"Test Co",
|
||||
]
|
||||
)
|
||||
)
|
||||
self.assertEqual("contact-set", args.command)
|
||||
self.assertEqual(14, args.contact_id)
|
||||
self.assertEqual(["maybe-customer"], args.add_tag)
|
||||
|
||||
args2 = build_parser().parse_args(
|
||||
inject_default_sync_command(
|
||||
["--project", "customer-service", "ticket-contact", "--issue-id", "41934", "--show"]
|
||||
)
|
||||
)
|
||||
self.assertEqual("ticket-contact", args2.command)
|
||||
self.assertTrue(args2.show)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user