def test_snapshots(project):
    """
    Test that the `dbt_updated_at` column reflects the `updated_at` timestamp expression in the config.

    Approach:
    1. Create a table that represents the expected data after a series of snapshots
        - Use dbt seed to create the expected relation (`snapshot_check_cols_updated_at_expected`)
    2. Execute a series of snapshots to create the data
        - Use a series of (3) dbt snapshot commands to create the actual relation (`snapshot_check_cols_updated_at_actual`)
        - The logic can switch between 3 different versions of the data (depending on the `version` number)
        - The `updated_at` value is passed in via `--vars` and cast to a timestamp in the snapshot config
    3. Compare the two relations for equality
    """

    # 1. Create a table that represents the expected data after a series of snapshots
    results = run_dbt(["seed", "--show", "--vars", "{version: 1, updated_at: 2016-07-01}"])
    assert len(results) == 1

    # 2. Execute a series of snapshots to create the data

    # Snapshot day 1
    results = run_dbt(["snapshot", "--vars", "{version: 1, updated_at: 2016-07-01}"])
    assert len(results) == 1

    # Snapshot day 2
    results = run_dbt(["snapshot", "--vars", "{version: 2, updated_at: 2016-07-02}"])
    assert len(results) == 1

    # Snapshot day 3
    results = run_dbt(["snapshot", "--vars", "{version: 3, updated_at: 2016-07-03}"])
    assert len(results) == 1

    # 3. Compare the two relations for equality
    check_relations_equal(
        project.adapter,
        ["snapshot_check_cols_updated_at_actual", "snapshot_check_cols_updated_at_expected"],
        compare_snapshot_cols=True,
    )

    Test that the `dbt_updated_at` column reflects the `updated_at` timestamp expression in the config.

    Approach:
    1. Create a table that represents the expected data after a series of snapshots
        - Use dbt seed to create the expected relation (`snapshot_check_cols_updated_at_expected`)
    2. Execute a series of snapshots to create the data
        - Use a series of (3) dbt snapshot commands to create the actual relation (`snapshot_check_cols_updated_at_actual`)
        - The logic can switch between 3 different versions of the data (depending on the `version` number)
        - The `updated_at` value is passed in via `--vars` and cast to a timestamp in the snapshot config
    3. Compare the two relations for equality
    
tests/functional/snapshots/test_check_cols_updated_at_snapshot.py