unit_tests:
  - name: test_global_acquisition_channel
    description: >
      Test global  fan artist acquisition channels, categories are applied correctly.
    model: GLOBAL_FAN_ARTIST_ACQUISITION_CHANNEL_DBT
    given:
      - input: source('bandsintown', 'raw_bandsintown_artist_optins')
        rows:
          - {
              download_date: '2025-06-16 00:00:00',
              artist_id: 1,
              user_id: 100,
            }
      - input: source('crm', 'form_c')
        rows:
          - {
              id: 'form_1_id',
              form_name_c: 'campaign_1',
              acquisition_channel_c: null,
              form_tool_name_c: 'mtl',
              custom_form_field_20_c: null,
            }
          - {
              id: 'form_2_id',
              form_name_c: 'campaign_2',
              acquisition_channel_c: null,
              form_tool_name_c: 'smf',
              custom_form_field_20_c: 'fan_card_activation',
            }
          - {
              id: 'form_3_id',
              form_name_c: 'campaign_3',
              acquisition_channel_c: null,
              form_tool_name_c: 'smf',
              custom_form_field_20_c: 'new_unknown_type',
            }
          - {
              id: 'form_4_id',
              form_name_c: 'campaign_4',
              acquisition_channel_c: null,
              form_tool_name_c: 'mtl',
              custom_form_field_20_c: null,
            }
          - {
              id: 'form_5_id',
              form_name_c: 'campaign_5',
              acquisition_channel_c: null,
              form_tool_name_c: 'smf',
              custom_form_field_20_c: 'fan_card_activation',
            }
          - {
              id: 'form_6_id',
              form_name_c: 'campaign_6',
              acquisition_channel_c: null,
              form_tool_name_c: 'smf',
              custom_form_field_20_c: 'new_unknown_type',
            }
      - input: source('crm', 'form_response_c')
        rows:
          - {
              id: 'form_1_response',
              form_id_c: 'form_1_id',
            }
          - {
              id: 'form_2_response',
              form_id_c: 'form_2_id',
            }
          - {
              id: 'form_3_response',
              form_id_c: 'form_3_id',
            }
      - input: source('crm', 'subscription_c')
        rows:
          - {
              id: 'form_4_sub',
              form_id_c: 'form_4_id',
            }
          - {
              id: 'form_5_sub',
              form_id_c: 'form_5_id',
          }
          - {
              id: 'form_6_sub',
              form_id_c: 'form_6_id',
            }
      - input: source('crm_fans', 'event_file_upload')
        rows:
          - {
              row_id: 8,
              campaign_id: 'fileupload_campaign_1',
            }
      - input: source('crm_fans', 'file_upload_campaigns')
        rows:
          - {
              campaign_id: 'fileupload_campaign_1',
              campaign_name: 'October_fans',
              acquisition_channel: 'SMS Campaigns',

            }
      - input: ref('SME_ACCOUNT_DBT')
        rows:
          - {
              ingest_global_data: true,
              vendor_id: 12345,
            }
      - input: ref('INT_ARTIST_EVENT_COLLECTION')
        format: sql
        rows: |
          select 12345 as vendor_id, 'form_1_response_id' as event_id, 'fan_1' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_1_response' as key, 'sme_crm' as source, 'campaign' as source_type
          union
          select 12345 as vendor_id, 'form_2_response_id' as event_id, 'fan_2' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_2_response' as key, 'sme_crm' as source, 'campaign' as source_type
          union
          select 12345 as vendor_id, 'form_3_response_id' as event_id, 'fan_3' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_3_response' as key, 'sme_crm' as source, 'campaign' as source_type
          union
          select 12345 as vendor_id, 'form_4_subscription_id' as event_id, 'fan_4' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_4_sub' as key, 'sme_crm' as source, 'newsletter' as source_type
          union
          select 12345 as vendor_id, 'form_5_subscription_id' as event_id, 'fan_5' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_5_sub' as key, 'sme_crm' as source, 'newsletter' as source_type
          union
          select 12345 as vendor_id, 'form_6_subscription_id' as event_id, 'fan_6' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'form_6_sub' as key, 'sme_crm' as source, 'newsletter' as source_type
          union
          select 12345 as vendor_id, 'ecommerce_1_id' as event_id, 'fan_7' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'purchase_1' as key, 'sme_shopify' as source, 'shopify' as source_type
          union
          select 12345 as vendor_id, 'fileupload_1_id' as event_id, 'fan_8' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, '8' as key, 'fileupload_crm' as source, 'campaign' as source_type
          union
          select 12345 as vendor_id, 'songwhip_1_id' as event_id, 'fan_9' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'album500500:spotify-presave-12345' as key, 'songwhip' as source, 'presave' as source_type
          union
          select 12345 as vendor_id, 'bit_1_id' as event_id, 'fan_10' as fan_id, 'artist_1' as global_participant_id, '2025-05-25' as happened_at, 'user_id:100:artist_id:1' as key, 'bandsintown' as source, 'artist_optin' as source_type
      - input: ref('SONGWHIP_PRESAVE_PAGE_DBT')
        rows:
          - {
              name: 'X Test Release',
              id: '500500',
            }
      - input: ref('SONGWHIP_CUSTOM_PAGE_DBT')
        rows:
          - {
              name: 'X Test Release',
              id: 123,
            }
      - input: source('fansifter', 'songwhip_page_unlock')
        rows:
          - {
              item_id: 454,
              id: '1234-xyzd-12341',
            }
      - input: ref('CRM_FORM_ACQUISITION_CHANNEL_OVERRIDE_DBT')
        rows:
          - {
              form_id: 'a0Q1p00000AWKNjEAP',
              form_name_c: 'campaign_1',
              tag: 'Campaign Tag',
              enum_tag: 'CAMPAIGN_TAG'
          }
    expect:
      rows:
        # Fan from CRM without campaign category
        - global_participant_id: 'artist_1'
          fan_id: 'fan_1'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_1_id'
          acquisition_campaign: 'campaign_1'
          acquisition_channel: 'MAKE_THE_LINK'
          campaign_category: 'SMF_UNCATEGORIZED'

        # Fan from CRM with predefined campaign category
        - global_participant_id: 'artist_1'
          fan_id: 'fan_2'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_2_id'
          acquisition_campaign: 'campaign_2'
          acquisition_channel: 'SMF_FAN_CARD_ACTIVATION'
          campaign_category: 'SMF_FAN_CARD_ACTIVATION'

        # Fan from CRM with predefined campaign category not matching expected
        - global_participant_id: 'artist_1'
          fan_id: 'fan_3'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_3_id'
          acquisition_campaign: 'campaign_3'
          acquisition_channel: 'SMF_BESPOKE_ACTIVATION'
          campaign_category: 'SMF_BESPOKE_ACTIVATION'

        # Fan from CRM with newsletter subscription without campaign category
        - global_participant_id: 'artist_1'
          fan_id: 'fan_4'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_4_id'
          acquisition_campaign: 'campaign_4'
          acquisition_channel: 'MAKE_THE_LINK'
          campaign_category: 'SMF_UNCATEGORIZED'

        # Fan from CRM with newsletter subscription  with predefined campaign category
        - global_participant_id: 'artist_1'
          fan_id: 'fan_5'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_5_id'
          acquisition_campaign: 'campaign_5'
          acquisition_channel: 'SMF_FAN_CARD_ACTIVATION'
          campaign_category: 'SMF_FAN_CARD_ACTIVATION'

        # Fan from CRM with newsletter subscription with predefined campaign category not matching expected
        - global_participant_id: 'artist_1'
          fan_id: 'fan_6'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'form_6_id'
          acquisition_campaign: 'campaign_6'
          acquisition_channel: 'SMF_BESPOKE_ACTIVATION'
          campaign_category: 'SMF_BESPOKE_ACTIVATION'

        # Fan from Ecommerce source
        - global_participant_id: 'artist_1'
          fan_id: 'fan_7'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'ecommerce'
          acquisition_campaign: 'Shopify Store Data'
          acquisition_channel: 'SHOPIFY'
          campaign_category: null

        # Fan from file upload tool
        - global_participant_id: 'artist_1'
          fan_id: 'fan_8'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'fileupload_campaign_1'
          acquisition_campaign: 'October_fans'
          acquisition_channel: 'SMS_CAMPAIGNS'
          campaign_category: null

        # Fan from Songwhip
        - global_participant_id: 'artist_1'
          fan_id: 'fan_9'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: '500500'
          acquisition_campaign: 'X Test Release'
          acquisition_channel: 'SONGWHIP_PRE_SAVE'
          campaign_category: null

        # Fan from BiT
        - global_participant_id: 'artist_1'
          fan_id: 'fan_10'
          acquired_at: '2025-05-25'
          acquisition_campaign_id: 'UNKNOWN_BANDSINTOWN_LIST'
          acquisition_campaign: 'Bandsintown artist opt-in'
          acquisition_channel: 'BANDSINTOWN_LIST'
          campaign_category: null
