Swap the aggregate of a Repo.aggregate/3 call along an SQL-meaningful ladder —
:sum↔:avg, :min↔:max. A surviving mutant means no test distinguishes, say, the
sum of a column from its average: the aggregate is computed but its kind is unchecked.
:count is deliberately left alone, here as in the query-side catalog — see
Mutare.Ecto.Aggregate.
Matched by resolving the call's module to one of the configured repo: modules (so the direct
MyApp.Repo.aggregate, an aliased Repo.aggregate, and an imported form all match) and
the function to aggregate. A piped q |> Repo.aggregate(:sum, :col) reaches the plugin as
the direct call, its queryable at argument 0, so the aggregate atom sits at the same position
in both spellings.
Summary
Functions
Aggregate-swap mutations for a Repo.aggregate/3 node as labelled :aggregate tags, or [].
Functions
@spec mutations(Macro.t(), Mutare.Ecto.Context.t()) :: [Mutare.Ecto.Tag.t()]
Aggregate-swap mutations for a Repo.aggregate/3 node as labelled :aggregate tags, or [].