Skip to content

test(providers): record live Mailchimp report responses for M6 - #183

Open
TheAggressive wants to merge 1 commit into
masterfrom
test/mailchimp-report-fixtures
Open

TheAggressive wants to merge 1 commit into
masterfrom
test/mailchimp-report-fixtures

Conversation

@TheAggressive

Copy link
Copy Markdown
Owner

Part of #67 (M6). These responses were recorded from the live Mailchimp account before its subscription ends, so normalized reporting can be built and tested without the account.

What this adds

  • tests/Fixtures/Mailchimp/reports.json records read-only, aggregate endpoints:
    • for a campaign that was sent: the report, click details, domain performance, locations, and sub-reports;
    • the report of an unsent draft (200, with nothing sent);
    • a report for a missing campaign (404 error shape);
    • the audience's stats.
  • Redacted before anything was written. Member-level endpoints were not called. Campaign, audience, and web IDs are placeholders, the recipient domain is example.com, list names, subjects, and sender details are {{field}} placeholders, and links are removed.
  • Mailchimp_Fixture_Privacy_Test checks every recorded Mailchimp fixture: it must state its source and contain no email address or credential. It also pins the aggregate shapes that reporting will rely on.

Findings for #67

  • delivery_status.status says delivered even when the only recipient soft-bounced. It means the send finished, not that mail reached an inbox, so reporting must not show it as inbox delivery.
  • Opens come in two forms, raw and proxy_excluded_* (Apple Mail Privacy Protection). Reporting should say which one it shows.
  • An unsent draft still returns a 200 report with zero counts. Reporting should not take that as a sent campaign.

Evidence

Mailchimp_Fixture_Privacy_Test passes (4 tests), and Prettier is clean.

🤖 Generated with Claude Code

Captured on 2026-10-17 from the live account before the subscription
ends, so normalized reporting (#67) can be built and tested without it:
aggregate report endpoints for a campaign that was sent, the report of an
unsent draft, a missing report, and audience stats. Member-level endpoints
were not called; IDs, names, subjects, sender details, and the recipient
domain are replaced with placeholders.

The recording shows delivery_status "delivered" for a send whose only
recipient soft-bounced, so "delivered" means the send finished, not inbox
delivery.

A guard test now proves every recorded Mailchimp fixture states its source
and contains no email address or credential.

Part of #67.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added area:php PHP or Composer code area:tests Automated tests or test configuration risk:low Narrow change eligible for opted-in automation type:chore Tooling, tests, CI, or build work labels Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:php PHP or Composer code area:tests Automated tests or test configuration risk:low Narrow change eligible for opted-in automation type:chore Tooling, tests, CI, or build work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant