1- import os
2-
31import pandas as pd
4- import pytest
52from sqlglot import exp
63
7- from sqlmesh .core import constants as c
4+ from sqlmesh .core .config import Config , DuckDBConnectionConfig , GatewayConfig
5+ from sqlmesh .core .context import Context
86from sqlmesh .core .dialect import parse
97from sqlmesh .core .model import load_model
108from sqlmesh .core .snapshot import SnapshotChangeCategory
119
1210
13- @pytest .fixture (autouse = True )
14- def cleanup (sushi_context ):
15- yield
16- os .remove (sushi_context .path / c .SCHEMA_YAML )
17-
11+ def test_create_external_models (tmpdir , assert_exp_eq ):
12+ config = Config (gateways = GatewayConfig (connection = DuckDBConnectionConfig ()))
13+ context = Context (paths = [tmpdir ], config = config )
1814
19- def test_create_external_models (sushi_context , assert_exp_eq ):
2015 fruits = pd .DataFrame (
2116 [
2217 {"id" : 1 , "name" : "apple" },
2318 {"id" : 2 , "name" : "banana" },
2419 ]
2520 )
2621
27- cursor = sushi_context .engine_adapter .cursor
22+ cursor = context .engine_adapter .cursor
23+ cursor .execute ("CREATE SCHEMA sushi" )
2824 cursor .execute ("CREATE TABLE sushi.raw_fruits AS SELECT * FROM fruits" )
2925
3026 model = load_model (
@@ -40,12 +36,12 @@ def test_create_external_models(sushi_context, assert_exp_eq):
4036 )
4137 )
4238
43- sushi_context .upsert_model (model )
44- sushi_context .create_external_models ()
45- assert sushi_context .models ["sushi.fruits" ].columns_to_types == {
39+ context .upsert_model (model )
40+ context .create_external_models ()
41+ assert context .models ["sushi.fruits" ].columns_to_types == {
4642 "name" : exp .DataType .build ("UNKNOWN" )
4743 }
48- sushi_context .load ()
44+ context .load ()
4945
5046 model = load_model (
5147 parse (
@@ -60,27 +56,27 @@ def test_create_external_models(sushi_context, assert_exp_eq):
6056 )
6157 )
6258
63- sushi_context .upsert_model (model )
64- raw_fruits = sushi_context .models ["sushi.raw_fruits" ]
59+ context .upsert_model (model )
60+ raw_fruits = context .models ["sushi.raw_fruits" ]
6561 assert raw_fruits .kind .is_symbolic
6662 assert raw_fruits .kind .is_external
6763 assert raw_fruits .columns_to_types == {
6864 "id" : exp .DataType .build ("BIGINT" ),
6965 "name" : exp .DataType .build ("VARCHAR" ),
7066 }
7167
72- snapshot = sushi_context .snapshots ["sushi.raw_fruits" ]
68+ snapshot = context .snapshots ["sushi.raw_fruits" ]
7369 snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
7470
75- fruits = sushi_context .models ["sushi.fruits" ]
71+ fruits = context .models ["sushi.fruits" ]
7672 assert not fruits .kind .is_symbolic
7773 assert not fruits .kind .is_external
7874 assert fruits .columns_to_types == {
7975 "id" : exp .DataType .build ("BIGINT" ),
8076 "name" : exp .DataType .build ("VARCHAR" ),
8177 }
8278 assert_exp_eq (
83- fruits .render_query (snapshots = sushi_context .snapshots ),
79+ fruits .render_query (snapshots = context .snapshots ),
8480 """
8581 SELECT
8682 raw_fruits.id AS id,
0 commit comments