mirror of
https://github.com/plausible/analytics.git
synced 2024-12-26 11:02:52 +03:00
80b98762f4
* More robust scheduling for email reports * Update config for new email report jobs * Only build docker on master * Use Postgres 12 in travis * Cache elixir files * use Postgres 12 in travis * Specify env on one line * Wrong postgres version
50 lines
1.6 KiB
Elixir
50 lines
1.6 KiB
Elixir
defmodule Plausible.Workers.SendEmailReportTest do
|
|
use Plausible.DataCase
|
|
use Bamboo.Test
|
|
alias Plausible.Workers.SendEmailReport
|
|
|
|
defp perform(args) do
|
|
SendEmailReport.new(args) |> Oban.insert!()
|
|
Oban.drain_queue(:send_email_reports)
|
|
end
|
|
|
|
describe "weekly reports" do
|
|
test "sends weekly report to all recipients" do
|
|
site = insert(:site, domain: "test-site.com", timezone: "US/Eastern")
|
|
insert(:weekly_report, site: site, recipients: ["user@email.com", "user2@email.com"])
|
|
|
|
perform(%{"site_id" => site.id, "interval" => "weekly"})
|
|
|
|
assert_email_delivered_with(
|
|
subject: "Weekly report for #{site.domain}",
|
|
to: [nil: "user@email.com"]
|
|
)
|
|
|
|
assert_email_delivered_with(
|
|
subject: "Weekly report for #{site.domain}",
|
|
to: [nil: "user2@email.com"]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "monthly_reports" do
|
|
test "sends monthly report to all recipients" do
|
|
site = insert(:site, domain: "test-site.com", timezone: "US/Eastern")
|
|
insert(:monthly_report, site: site, recipients: ["user@email.com", "user2@email.com"])
|
|
last_month = Timex.now(site.timezone) |> Timex.shift(months: -1) |> Timex.beginning_of_month() |> Timex.format!("{Mfull}")
|
|
|
|
perform(%{"site_id" => site.id, "interval" => "monthly"})
|
|
|
|
assert_email_delivered_with(
|
|
subject: "#{last_month} report for #{site.domain}",
|
|
to: [nil: "user@email.com"]
|
|
)
|
|
|
|
assert_email_delivered_with(
|
|
subject: "#{last_month} report for #{site.domain}",
|
|
to: [nil: "user2@email.com"]
|
|
)
|
|
end
|
|
end
|
|
end
|