import datetime from datetime import date from unittest.mock import patch from db import db from tests.delphi_tables.utils import Verifier, Requests from tests import BaseTestCase, mock_for_user from tests.test_utils import FixtureLoader from models import models from tests.delphi_tables.fixtures.delphi_tables_fixture import fixture from tests.delphi_tables.models import TriggerConnectorModel, TriggerAdAccountModel from migrations.fixtures.delphi_tables.v9.data_migrator import DataMigrator from migrations.fixtures.delphi_tables.views import DelphiViewsV9 from migrations.fixtures.delphi_tables.v9.tables import DelphiTables user1Mock = mock_for_user(1, "dev-marketing-user-1@example.com", "sme-dna|5cf0091d6c91d310fe6fcdc6", is_admin=True) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user1Mock.jwt_decode) class TestConnectorsTriggersTable(BaseTestCase): def setUp(self): super().setUp() self.verifier = Verifier(self) self.requests = Requests(self) self.restore_tables_and_triggers() def restore_tables_and_triggers(self): FixtureLoader(models=models).import_as_sql(fixture) DelphiViewsV9(db.session).create() delphi_tables = DelphiTables(db.session) delphi_tables.drop() delphi_tables.create() DataMigrator(db.session).execute() db.session.commit() def test_initial_connectors_view_working(self): connector = TriggerConnectorModel( schema_name="google_ads_1", id="new_mount", decibel_label_id=1, is_active=False, user_id=1, platform="google_ads", date_created=date(2022, 4, 1), manager="dev-marketing-user-2@example.com", last_sync_at=datetime.datetime(2022, 4, 1) ) ad_account = TriggerAdAccountModel( connector_id="new_mount", ad_account_id="454567" ) self.verifier.verify_connector(connector) self.verifier.verify_ad_account(ad_account) def test_update_connector_status_should_update_status_in_all_ad_accounts(self): connector = TriggerConnectorModel( schema_name="google_ads_1", id="new_mount", decibel_label_id=1, is_active=True, user_id=1, platform="google_ads", date_created=date(2022, 4, 1), manager="dev-marketing-user-2@example.com", last_sync_at=datetime.datetime(2022, 4, 1) ) self.requests.update_connector_status(connector.id, 1) self.verifier.verify_connector(connector) def test_change_user_manager_update_data_in_all_ad_accounts(self): connector = TriggerConnectorModel( schema_name="google_ads_1", id="new_mount", decibel_label_id=1, is_active=False, user_id=1, platform="google_ads", date_created=date(2022, 4, 1), manager="dev-marketing-user-3@example.com", last_sync_at=datetime.datetime(2022, 4, 1) ) self.requests.update_manager(1, 3) self.verifier.verify_connector(connector)