From b18bb2feeb2b7946b52ef72cc3676d9631435a9d Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Mon, 12 Aug 2024 09:53:28 -0700 Subject: [PATCH] Refactor for unit testing --- cmd/internal/planetscale_edge_mysql.go | 6 ++- cmd/internal/planetscale_edge_mysql_test.go | 53 +++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 cmd/internal/planetscale_edge_mysql_test.go diff --git a/cmd/internal/planetscale_edge_mysql.go b/cmd/internal/planetscale_edge_mysql.go index 5d41b86..b721656 100644 --- a/cmd/internal/planetscale_edge_mysql.go +++ b/cmd/internal/planetscale_edge_mysql.go @@ -136,7 +136,7 @@ func (p planetScaleEdgeMySQLAccess) GetTableNames(ctx context.Context, psc Plane } // skip any that are Vitess's GC tables. - if !gcTableNameRegexp.MatchString(name) && !vreplRegex.MatchString(name) { + if !filterTable(name) { tables = append(tables, name) } } @@ -148,6 +148,10 @@ func (p planetScaleEdgeMySQLAccess) GetTableNames(ctx context.Context, psc Plane return tables, err } +func filterTable(name string) bool { + return gcTableNameRegexp.MatchString(name) || vreplRegex.MatchString(name) +} + func (p planetScaleEdgeMySQLAccess) GetTableSchema(ctx context.Context, psc PlanetScaleSource, tableName string) (map[string]PropertyType, error) { properties := map[string]PropertyType{} diff --git a/cmd/internal/planetscale_edge_mysql_test.go b/cmd/internal/planetscale_edge_mysql_test.go new file mode 100644 index 0000000..bdd1af4 --- /dev/null +++ b/cmd/internal/planetscale_edge_mysql_test.go @@ -0,0 +1,53 @@ +package internal + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFilterNames_CanFilterInternalVitessTables(t *testing.T) { + var tests = []struct { + name string + tableName string + filtered bool + }{ + { + name: "filters_vrepl_tables", + tableName: "_750a3e1f_e6f3_5249_82af_82f5d325ecab_20240528153135_vrepl", + filtered: true, + }, + { + name: "filters_vt_DROP_tables", + tableName: "_vt_DROP_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + filtered: true, + }, + { + name: "filters_vt_HOLD_tables", + tableName: "_vt_HOLD_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + filtered: true, + }, + { + name: "filters_vt_EVAC_tables", + tableName: "_vt_EVAC_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + filtered: true, + }, + { + name: "filters_vt_PURGE_tables", + tableName: "_vt_PURGE_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + filtered: true, + }, + { + name: "does_not_filter_regular_table", + tableName: "customers", + filtered: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + filteredResult := filterTable(tt.tableName) + assert.Equal(t, tt.filtered, filteredResult) + }) + } +}