58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""The campaign schema migration must be registered and reversible."""
|
|
from adclaw.db.migrations import MIGRATIONS
|
|
|
|
VERSION = "202608010001"
|
|
|
|
|
|
def _migration():
|
|
return next((m for m in MIGRATIONS if m.version == VERSION), None)
|
|
|
|
|
|
def test_campaign_migration_is_registered():
|
|
assert _migration() is not None
|
|
|
|
|
|
def test_campaign_migration_creates_expected_tables():
|
|
up = _migration().up_sql
|
|
for table in (
|
|
"maskanx_campaign_adsets",
|
|
"maskanx_campaign_ads",
|
|
"maskanx_campaign_events",
|
|
"maskanx_campaign_insights",
|
|
):
|
|
assert f"CREATE TABLE IF NOT EXISTS {table}" in up
|
|
|
|
|
|
def test_campaign_migration_adds_columns_to_campaigns():
|
|
up = _migration().up_sql
|
|
for column in (
|
|
"origin",
|
|
"ad_account_id",
|
|
"budget",
|
|
"guardrails",
|
|
"targeting",
|
|
"advanced",
|
|
"meta_campaign_id",
|
|
"sync_status",
|
|
"sync_error",
|
|
"last_synced_at",
|
|
"approved_by",
|
|
"approved_at",
|
|
"launched_at",
|
|
"stopped_at",
|
|
"deleted_in_meta_at",
|
|
):
|
|
assert f"ADD COLUMN IF NOT EXISTS {column}" in up
|
|
|
|
|
|
def test_campaign_migration_down_drops_new_tables():
|
|
down = _migration().down_sql
|
|
for table in (
|
|
"maskanx_campaign_insights",
|
|
"maskanx_campaign_events",
|
|
"maskanx_campaign_ads",
|
|
"maskanx_campaign_adsets",
|
|
):
|
|
assert f"DROP TABLE IF EXISTS {table}" in down
|