v0.1.0
Initial release.
Added
- Eight mutator families over the Swoosh email surface, each reported under
its own name and independently enable-able:Mutare.Swoosh.Recipient(:swoosh_recipient) — swaps recipient classes
(to/cc/bcc, andput_to/put_cc/put_bccamong themselves),
deletes one recipient from literal recipient values, and weakens
put_* →plain (append) one-directionally — replace-semantics
declared but untested (each such mutant carries an equivalence note:
a kill may require pre-existing recipients).Mutare.Swoosh.Sender(:swoosh_sender) — swapsfrom↔reply_to
and dropsreply_to(delete— replies silently go tofrom).Mutare.Swoosh.Subject(:swoosh_subject) — blanks the subject
(subject(email, v)→subject(email, ""); thesubject:option in
new/1is dropped).Mutare.Swoosh.Body(:swoosh_body) — swapshtml_body↔text_body.Mutare.Swoosh.Header(:swoosh_header) — removesheader/3and drops
entries from aheaders:option innew/1.Mutare.Swoosh.Attachment(:swoosh_attachment) — swaps attachment
disposition (type: :inline↔:attachment) and removes the
attachment/2call /attachment:option entirely (delete).Mutare.Swoosh.ProviderOption(:swoosh_provider_option) — removes
put_provider_option/3(provider template ids and dynamic template data
are exactly the untested things).Mutare.Swoosh.Deliver(:swoosh_deliver) — the marquee mutation:
replacesMailer.deliver/1,2with a non-delivering{:ok, %{}}(and
deliver!/1,2with%{}), asking "does any test assert the email was
actually sent?" Configurable with the application's mailer(s):
{Mutare.Swoosh.Deliver, mailer: MyApp.Mailer}, or
Mutare.Swoosh.all(mailer: MyApp.Mailer); inert without it.
- Every email-field family mutates both the pipeline call and the matching
Swoosh.Email.new/1option; calls match written qualified, aliased,
imported, or piped. - Ignore-variant labels throughout, so
# mutare:ignore[family:label]can
suppress one kind of mutant (e.g.[swoosh_recipient:append],
[swoosh_deliver:deliver!]). Mutare.Swoosh.all/0for splicing all families into a:mutatorslist;
Mutare.Swoosh.all/1to configure the deliver family'smailer:in place.