MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestGetQuerySpan

Function TestGetQuerySpan

backend/plugin/parser/tsql/query_span_test.go:20–81  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

18)
19
20func TestGetQuerySpan(t *testing.T) {
21 type testCase struct {
22 Description string `yaml:"description,omitempty"`
23 Statement string `yaml:"statement,omitempty"`
24 DefaultDatabase string `yaml:"defaultDatabase,omitempty"`
25 IgnoreCaseSensitve bool `yaml:"ignoreCaseSensitive,omitempty"`
26 // Metadata is the protojson encoded storepb.DatabaseSchemaMetadata,
27 // if it's empty, we will use the defaultDatabaseMetadata.
28 Metadata []string `yaml:"metadata,omitempty"`
29 QuerySpan *base.YamlQuerySpan `yaml:"querySpan,omitempty"`
30 }
31
32 var (
33 record = false
34 testDataPaths = []string{
35 "test-data/query-span/standard.yaml",
36 "test-data/query-span/join.yaml",
37 "test-data/query-span/case-sensitivity.yaml",
38 "test-data/query-span/query_type.yaml",
39 "test-data/query-span/predicate.yaml",
40 "test-data/query-span/regression.yaml",
41 }
42 )
43
44 a := require.New(t)
45 for _, testDataPath := range testDataPaths {
46 yamlFile, err := os.Open(testDataPath)
47 a.NoError(err)
48
49 var testCases []testCase
50 byteValue, err := io.ReadAll(yamlFile)
51 a.NoError(err)
52 a.NoError(yamlFile.Close())
53 a.NoError(yaml.Unmarshal(byteValue, &testCases))
54
55 for i, tc := range testCases {
56 var ms []*storepb.DatabaseSchemaMetadata
57 for _, metadata := range tc.Metadata {
58 storepbMetadata := &storepb.DatabaseSchemaMetadata{}
59 a.NoErrorf(common.ProtojsonUnmarshaler.Unmarshal([]byte(metadata), storepbMetadata), "cases %d", i+1)
60 ms = append(ms, storepbMetadata)
61 }
62 databaseMetadataGetter, databaseNameLister := buildMockDatabaseMetadataGetter(ms)
63 result, err := GetQuerySpan(context.TODO(), base.GetQuerySpanContext{
64 GetDatabaseMetadataFunc: databaseMetadataGetter,
65 ListDatabaseNamesFunc: databaseNameLister,
66 TempTables: make(map[string]*base.PhysicalTable),
67 }, base.Statement{Text: tc.Statement}, tc.DefaultDatabase, "dbo", tc.IgnoreCaseSensitve)
68 a.NoErrorf(err, "statement: %s", tc.Statement)
69 resultYaml := result.ToYaml()
70 if record {
71 testCases[i].QuerySpan = resultYaml
72 } else {
73 a.Equalf(tc.QuerySpan, resultYaml, "statement: %s", tc.Statement)
74 }
75 }
76
77 if record {

Callers

nothing calls this directly

Calls 7

RecordFunction · 0.92
UnmarshalMethod · 0.80
ToYamlMethod · 0.80
GetQuerySpanFunction · 0.70
OpenMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected