| defmodule Plausible.Workers.ClickhouseCleanSitesTest do |
| use Plausible.DataCase |
| import Plausible.Factory |
|
|
| alias Plausible.Workers.ClickhouseCleanSites |
|
|
| @tag :slow |
| test "deletes data from events and sessions tables" do |
| site = insert(:site) |
| deleted_site = insert(:site) |
|
|
| populate_stats(site, [ |
| build(:pageview) |
| ]) |
|
|
| populate_stats(deleted_site, [ |
| build(:pageview), |
| build(:pageview), |
| build(:imported_visitors), |
| build(:imported_sources), |
| build(:imported_pages), |
| build(:imported_entry_pages), |
| build(:imported_exit_pages), |
| build(:imported_locations), |
| build(:imported_devices), |
| build(:imported_browsers), |
| build(:imported_operating_systems) |
| ]) |
|
|
| Repo.delete!(deleted_site) |
|
|
| assert Enum.member?( |
| ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(), |
| deleted_site.id |
| ) |
|
|
| assert not Enum.member?( |
| ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(), |
| site.id |
| ) |
|
|
| ClickhouseCleanSites.perform(nil) |
|
|
| assert_count(deleted_site, "events_v2", 0) |
| assert_count(deleted_site, "sessions_v2", 0) |
| assert_count(deleted_site, "imported_visitors", 0) |
| assert_count(deleted_site, "imported_sources", 0) |
| assert_count(deleted_site, "imported_pages", 0) |
| assert_count(deleted_site, "imported_entry_pages", 0) |
| assert_count(deleted_site, "imported_exit_pages", 0) |
| assert_count(deleted_site, "imported_locations", 0) |
| assert_count(deleted_site, "imported_devices", 0) |
| assert_count(deleted_site, "imported_browsers", 0) |
| assert_count(deleted_site, "imported_operating_systems", 0) |
| assert_count(site, "events_v2", 1) |
| assert_count(site, "sessions_v2", 1) |
|
|
| assert not Enum.member?( |
| ClickhouseCleanSites.get_deleted_sites_with_clickhouse_data(), |
| deleted_site.id |
| ) |
| end |
|
|
| def assert_count(site, table, expected_count) do |
| q = from(e in table, select: %{count: fragment("count()")}, where: e.site_id == ^site.id) |
| await_clickhouse_count(q, expected_count) |
| end |
| end |
|
|