Files
relspecgo/pkg/writers/mysql/writer_test.go
T

45 lines
1.3 KiB
Go

package mysql
import (
"bytes"
"strings"
"testing"
"git.warky.dev/wdevs/relspecgo/pkg/models"
"git.warky.dev/wdevs/relspecgo/pkg/writers"
)
func TestStripComments(t *testing.T) {
got := stripComments("-- header\nCREATE TABLE `users` (\n `id` INT\n);")
if strings.HasPrefix(got, "--") || !strings.HasPrefix(got, "CREATE TABLE") {
t.Fatalf("stripComments() = %q", got)
}
}
func TestWriterGeneratesMySQLDDL(t *testing.T) {
db := models.InitDatabase("app")
s := models.InitSchema("app")
table := models.InitTable("users", "app")
table.Columns["id"] = models.InitColumn("id", "users", "app")
table.Columns["id"].Type = "int"
table.Columns["id"].IsPrimaryKey = true
table.Columns["id"].NotNull = true
table.Columns["name"] = models.InitColumn("name", "users", "app")
table.Columns["name"].Type = "string"
table.Columns["name"].Length = 80
s.Tables = append(s.Tables, table)
db.Schemas = append(db.Schemas, s)
var out bytes.Buffer
w := NewWriter(&writers.WriterOptions{Metadata: map[string]interface{}{}})
w.writer = &out
if err := w.WriteDatabase(db); err != nil {
t.Fatal(err)
}
got := out.String()
for _, want := range []string{"CREATE TABLE IF NOT EXISTS `app`.`users`", "`id` INT NOT NULL", "`name` VARCHAR(80)", "PRIMARY KEY (`id`)"} {
if !strings.Contains(got, want) {
t.Errorf("DDL missing %q:\n%s", want, got)
}
}
}