MCPcopy Index your code
hub / github.com/rilldata/rill / TestRefInferrence

Function TestRefInferrence

runtime/parser/parser_test.go:792–850  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

790}
791
792func TestRefInferrence(t *testing.T) {
793 // Create model referencing "bar"
794 foo := &Resource{
795 Name: ResourceName{Kind: ResourceKindModel, Name: "foo"},
796 Paths: []string{"/models/foo.sql"},
797 ModelSpec: &runtimev1.ModelSpec{
798 RefreshSchedule: &runtimev1.Schedule{RefUpdate: true},
799 InputConnector: "duckdb",
800 InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT * FROM bar"})),
801 OutputConnector: "duckdb",
802 ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET,
803 },
804 }
805 ctx := context.Background()
806 repo := makeRepo(t, map[string]string{
807 // rill.yaml
808 `rill.yaml`: ``,
809 // model foo
810 `models/foo.sql`: `SELECT * FROM bar`,
811 })
812 p, err := Parse(ctx, repo, "", "", "duckdb", true)
813 require.NoError(t, err)
814 requireResourcesAndErrors(t, p, []*Resource{foo}, nil)
815
816 // Add model "bar"
817 foo.Refs = []ResourceName{{Kind: ResourceKindModel, Name: "bar"}}
818 bar := &Resource{
819 Name: ResourceName{Kind: ResourceKindModel, Name: "bar"},
820 Paths: []string{"/models/bar.sql"},
821 ModelSpec: &runtimev1.ModelSpec{
822 RefreshSchedule: &runtimev1.Schedule{RefUpdate: true},
823 InputConnector: "duckdb",
824 InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT * FROM baz"})),
825 OutputConnector: "duckdb",
826 ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET,
827 },
828 }
829 putRepo(t, repo, map[string]string{
830 `models/bar.sql`: `SELECT * FROM baz`,
831 })
832 diff, err := p.Reparse(ctx, []string{"/models/bar.sql"})
833 require.NoError(t, err)
834 requireResourcesAndErrors(t, p, []*Resource{foo, bar}, nil)
835 require.Equal(t, &Diff{
836 Added: []ResourceName{bar.Name},
837 Modified: []ResourceName{foo.Name},
838 }, diff)
839
840 // Remove "bar"
841 foo.Refs = nil
842 deleteRepo(t, repo, bar.Paths[0])
843 diff, err = p.Reparse(ctx, []string{"/models/bar.sql"})
844 require.NoError(t, err)
845 requireResourcesAndErrors(t, p, []*Resource{foo}, nil)
846 require.Equal(t, &Diff{
847 Modified: []ResourceName{foo.Name},
848 Deleted: []ResourceName{bar.Name},
849 }, diff)

Callers

nothing calls this directly

Calls 7

makeRepoFunction · 0.85
putRepoFunction · 0.85
deleteRepoFunction · 0.85
ReparseMethod · 0.80
mustFunction · 0.70
ParseFunction · 0.70

Tested by

no test coverage detected