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

Function TestGetQuerySpan

backend/plugin/parser/pg/query_span_test.go:20–71  ·  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 // Metadata is the protojson encoded storepb.DatabaseSchemaMetadata,
26 // if it's empty, we will use the defaultDatabaseMetadata.
27 Metadata string `yaml:"metadata,omitempty"`
28 QuerySpan *base.YamlQuerySpan `yaml:"querySpan,omitempty"`
29 }
30
31 const (
32 record = false
33 )
34
35 var (
36 testDataPaths = []string{"test-data/query_span.yaml", "test-data/query_type.yaml"}
37 )
38
39 a := require.New(t)
40 for _, testDataPath := range testDataPaths {
41 yamlFile, err := os.Open(testDataPath)
42 a.NoError(err)
43
44 var testCases []testCase
45 byteValue, err := io.ReadAll(yamlFile)
46 a.NoError(err)
47 a.NoError(yamlFile.Close())
48 a.NoError(yaml.Unmarshal(byteValue, &testCases))
49
50 for i, tc := range testCases {
51 metadata := &storepb.DatabaseSchemaMetadata{}
52 a.NoError(common.ProtojsonUnmarshaler.Unmarshal([]byte(tc.Metadata), metadata))
53 databaseMetadataGetter, databaseNameLister := buildMockDatabaseMetadataGetter([]*storepb.DatabaseSchemaMetadata{metadata})
54 result, err := GetQuerySpan(context.TODO(), base.GetQuerySpanContext{
55 GetDatabaseMetadataFunc: databaseMetadataGetter,
56 ListDatabaseNamesFunc: databaseNameLister,
57 }, base.Statement{Text: tc.Statement}, tc.DefaultDatabase, "", false)
58 a.NoErrorf(err, "idx: %d statement: %s", i, tc.Statement)
59 resultYaml := result.ToYaml()
60 if record {
61 testCases[i].QuerySpan = resultYaml
62 } else {
63 a.Equal(tc.QuerySpan, resultYaml, "idx: %d statement: %s", i, tc.Statement)
64 }
65 }
66
67 if record {
68 yamltest.Record(t, testDataPath, testCases)
69 }
70 }
71}
72
73func buildMockDatabaseMetadataGetter(databaseMetadata []*storepb.DatabaseSchemaMetadata) (base.GetDatabaseMetadataFunc, base.ListDatabaseNamesFunc) {
74 return func(_ context.Context, _, databaseName string) (string, *model.DatabaseMetadata, error) {

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