fix: add Mailchimp documented shortcut aliases

This commit is contained in:
iGodly
2026-05-12 01:08:19 +03:00
parent a536f7789c
commit 7788dc09f9
5 changed files with 73 additions and 0 deletions
@@ -346,8 +346,24 @@ def _generate_module(tag: str, operations: list[tuple[str, str, dict]]) -> str:
body_parts.append('campaigns_group.add_command(_cmd_list_campaigns_id_content, "list-content")\n')
if tag.lower() == "campaigns" and cmd_name == "list-campaigns-id-send-checklist":
body_parts.append('campaigns_group.add_command(_cmd_list_campaigns_id_send_checklist, "list-send-checklist")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-click-details":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_click_details, "list-click-details")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-domain-performance":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_domain_performance, "list-domain-performance")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-email-activity":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_email_activity, "list-email-activity")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-locations":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_locations, "list-locations")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-open-details":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_open_details, "list-open-details")\n')
if tag.lower() == "reports" and cmd_name == "list-reports-id-unsubscribed":
body_parts.append('reports_group.add_command(_cmd_list_reports_id_unsubscribed, "list-unsubscribed")\n')
if tag.lower() == "automations" and cmd_name == "list-automations-id-emails":
body_parts.append('automations_group.add_command(_cmd_list_automations_id_emails, "list-emails")\n')
if tag.lower() == "lists" and cmd_name == "create-lists-id-members":
body_parts.append('lists_group.add_command(_cmd_create_lists_id_members, "create-members")\n')
if tag.lower() == "lists" and cmd_name == "list-preview-a-segment":
body_parts.append('lists_group.add_command(_cmd_list_preview_a_segment, "list-lists-id-segments")\n')
return header + "\n".join(body_parts)
@@ -191,6 +191,8 @@ def _cmd_list_automations_id_emails(ctx, workflow_id, extra_params):
return
_out(result)
automations_group.add_command(_cmd_list_automations_id_emails, "list-emails")
@automations_group.command("delete")
@click.argument("WORKFLOW_ID")
@click.argument("WORKFLOW_EMAIL_ID")
@@ -1340,6 +1340,8 @@ def _cmd_list_preview_a_segment(ctx, list_id, fields, exclude_fields, count, off
return
_out(result)
lists_group.add_command(_cmd_list_preview_a_segment, "list-lists-id-segments")
@lists_group.command("create-lists-id-segments")
@click.argument("LIST_ID")
@click.option("--data", default=None, help="Request body as JSON string.")
@@ -195,6 +195,8 @@ def _cmd_list_reports_id_click_details(ctx, campaign_id, fields, exclude_fields,
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_click_details, "list-click-details")
@reports_group.command("get-reports-id-click-details-id")
@click.argument("CAMPAIGN_ID")
@click.argument("LINK_ID")
@@ -303,6 +305,8 @@ def _cmd_list_reports_id_domain_performance(ctx, campaign_id, fields, exclude_fi
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_domain_performance, "list-domain-performance")
@reports_group.command("list-reports-id-ecommerce-product-activity")
@click.argument("CAMPAIGN_ID")
@click.option("--fields", "fields", default=None, help="A comma-separated list of fields to return. Reference parameters of sub-objects ")
@@ -390,6 +394,8 @@ def _cmd_list_reports_id_email_activity(ctx, campaign_id, fields, exclude_fields
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_email_activity, "list-email-activity")
@reports_group.command("get-reports-id-email-activity-id")
@click.argument("CAMPAIGN_ID")
@click.argument("SUBSCRIBER_HASH")
@@ -447,6 +453,8 @@ def _cmd_list_reports_id_locations(ctx, campaign_id, fields, exclude_fields, cou
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_locations, "list-locations")
@reports_group.command("list-reports-id-open-details")
@click.argument("CAMPAIGN_ID")
@click.option("--fields", "fields", default=None, help="A comma-separated list of fields to return. Reference parameters of sub-objects ")
@@ -482,6 +490,8 @@ def _cmd_list_reports_id_open_details(ctx, campaign_id, fields, exclude_fields,
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_open_details, "list-open-details")
@reports_group.command("get-reports-id-open-details-id-members-id")
@click.argument("CAMPAIGN_ID")
@click.argument("SUBSCRIBER_HASH")
@@ -617,6 +627,8 @@ def _cmd_list_reports_id_unsubscribed(ctx, campaign_id, fields, exclude_fields,
return
_out(result)
reports_group.add_command(_cmd_list_reports_id_unsubscribed, "list-unsubscribed")
@reports_group.command("get-reports-id-unsubscribed-id")
@click.argument("CAMPAIGN_ID")
@click.argument("SUBSCRIBER_HASH")
@@ -434,6 +434,47 @@ class TestGeneratedCommandsImport(unittest.TestCase):
client.get.assert_any_call("/campaigns/campaign-1/content", params=None)
client.get.assert_any_call("/campaigns/campaign-1/send-checklist", params=None)
def test_report_shortcut_aliases_match_generated_commands(self):
from click.testing import CliRunner
from cli_anything.mailchimp.commands.reports import reports_group
client = MagicMock()
client.get.return_value = {"items": []}
shortcuts = {
"list-email-activity": "/reports/campaign-1/email-activity",
"list-click-details": "/reports/campaign-1/click-details",
"list-open-details": "/reports/campaign-1/open-details",
"list-unsubscribed": "/reports/campaign-1/unsubscribed",
"list-locations": "/reports/campaign-1/locations",
"list-domain-performance": "/reports/campaign-1/domain-performance",
}
with patch("cli_anything.mailchimp.core.client.get_client", return_value=client):
for command in shortcuts:
result = CliRunner().invoke(reports_group, [command, "campaign-1"])
assert result.exit_code == 0, result.output
for path in shortcuts.values():
client.get.assert_any_call(path, params=None)
def test_automation_and_segment_shortcut_aliases_match_generated_commands(self):
from click.testing import CliRunner
from cli_anything.mailchimp.commands.automations import automations_group
from cli_anything.mailchimp.commands.lists import lists_group
client = MagicMock()
client.get.return_value = {"items": []}
with patch("cli_anything.mailchimp.core.client.get_client", return_value=client):
emails = CliRunner().invoke(automations_group, ["list-emails", "workflow-1"])
segments = CliRunner().invoke(lists_group, ["list-lists-id-segments", "list-1"])
assert emails.exit_code == 0, emails.output
assert segments.exit_code == 0, segments.output
client.get.assert_any_call("/automations/workflow-1/emails", params=None)
client.get.assert_any_call("/lists/list-1/segments", params=None)
def test_ping_group_invokes_health_check_without_list_subcommand(self):
from click.testing import CliRunner
from cli_anything.mailchimp.mailchimp_cli import cli