(t *testing.T)
| 985 | } |
| 986 | |
| 987 | func TestProjectModelDefaults(t *testing.T) { |
| 988 | ctx := context.Background() |
| 989 | |
| 990 | files := map[string]string{ |
| 991 | // Provide dashboard defaults in rill.yaml |
| 992 | `rill.yaml`: ` |
| 993 | models: |
| 994 | materialize: true |
| 995 | `, |
| 996 | // Model that inherits defaults |
| 997 | `models/m1.sql`: ` |
| 998 | SELECT * FROM t1 |
| 999 | `, |
| 1000 | // Model that overrides defaults |
| 1001 | `models/m2.sql`: ` |
| 1002 | -- @materialize: false |
| 1003 | SELECT * FROM t2 |
| 1004 | `, |
| 1005 | } |
| 1006 | |
| 1007 | resources := []*Resource{ |
| 1008 | // m1 |
| 1009 | { |
| 1010 | Name: ResourceName{Kind: ResourceKindModel, Name: "m1"}, |
| 1011 | Paths: []string{"/models/m1.sql"}, |
| 1012 | ModelSpec: &runtimev1.ModelSpec{ |
| 1013 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 1014 | InputConnector: "duckdb", |
| 1015 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": strings.TrimSpace(files["models/m1.sql"])})), |
| 1016 | OutputConnector: "duckdb", |
| 1017 | OutputProperties: must(structpb.NewStruct(map[string]any{"materialize": true})), |
| 1018 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 1019 | }, |
| 1020 | }, |
| 1021 | // m2 |
| 1022 | { |
| 1023 | Name: ResourceName{Kind: ResourceKindModel, Name: "m2"}, |
| 1024 | Paths: []string{"/models/m2.sql"}, |
| 1025 | ModelSpec: &runtimev1.ModelSpec{ |
| 1026 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 1027 | InputConnector: "duckdb", |
| 1028 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": strings.TrimSpace(files["models/m2.sql"])})), |
| 1029 | OutputConnector: "duckdb", |
| 1030 | OutputProperties: must(structpb.NewStruct(map[string]any{"materialize": false})), |
| 1031 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 1032 | }, |
| 1033 | }, |
| 1034 | } |
| 1035 | |
| 1036 | repo := makeRepo(t, files) |
| 1037 | p, err := Parse(ctx, repo, "", "", "duckdb", true) |
| 1038 | require.NoError(t, err) |
| 1039 | requireResourcesAndErrors(t, p, resources, nil) |
| 1040 | } |
| 1041 | |
| 1042 | func TestProjectMetricsViewDefaults(t *testing.T) { |
| 1043 | ctx := context.Background() |
nothing calls this directly
no test coverage detected