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

Function TestGetQuerySpan

backend/plugin/parser/plsql/query_span_test.go:26–82  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24)
25
26func TestGetQuerySpan(t *testing.T) {
27 type testCase struct {
28 Description string `yaml:"description,omitempty"`
29 Statement string `yaml:"statement,omitempty"`
30 DefaultDatabase string `yaml:"defaultDatabase,omitempty"`
31 // Metadata is the protojson encoded storepb.DatabaseSchemaMetadata,
32 // if it's empty, we will use the defaultDatabaseMetadata.
33 Metadata string `yaml:"metadata,omitempty"`
34 CrossDatabaseMetadata string `yaml:"crossDatabaseMetadata,omitempty"`
35 QuerySpan *base.YamlQuerySpan `yaml:"querySpan,omitempty"`
36 }
37
38 const (
39 record = false
40 testDataPath = "test-data/query_span.yaml"
41 )
42
43 a := require.New(t)
44 yamlFile, err := os.Open(testDataPath)
45 a.NoError(err)
46
47 var testCases []testCase
48 byteValue, err := io.ReadAll(yamlFile)
49 a.NoError(err)
50 a.NoError(yamlFile.Close())
51 a.NoError(yaml.Unmarshal(byteValue, &testCases))
52
53 for i, tc := range testCases {
54 metadata := &storepb.DatabaseSchemaMetadata{}
55 a.NoError(common.ProtojsonUnmarshaler.Unmarshal([]byte(tc.Metadata), metadata))
56 list := []*storepb.DatabaseSchemaMetadata{metadata}
57 crossDatabase := &storepb.DatabaseSchemaMetadata{}
58 if tc.CrossDatabaseMetadata != "" {
59 a.NoError(common.ProtojsonUnmarshaler.Unmarshal([]byte(tc.CrossDatabaseMetadata), crossDatabase))
60 list = append(list, crossDatabase)
61 }
62 databaseMetadataGetter, databaseNamesLister, linkedDatabaseMetadataGetter := buildMockDatabaseMetadataGetter(list)
63 result, err := GetQuerySpan(context.TODO(), base.GetQuerySpanContext{
64 InstanceID: instanceIDA,
65 GetDatabaseMetadataFunc: databaseMetadataGetter,
66 ListDatabaseNamesFunc: databaseNamesLister,
67 GetLinkedDatabaseMetadataFunc: linkedDatabaseMetadataGetter,
68 }, base.Statement{Text: tc.Statement}, tc.DefaultDatabase, "", false)
69 a.NoError(err)
70 a.NotNil(result)
71 resultYaml := result.ToYaml()
72 if record {
73 testCases[i].QuerySpan = resultYaml
74 } else {
75 a.Equal(tc.QuerySpan, resultYaml, "statement: %s", tc.Statement)
76 }
77 }
78
79 if record {
80 yamltest.Record(t, testDataPath, testCases)
81 }
82}
83

Callers

nothing calls this directly

Calls 8

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

Tested by

no test coverage detected