Move schema parsing to its own package
All checks were successful
CI / release-test (push) Successful in 4s
All checks were successful
CI / release-test (push) Successful in 4s
This commit is contained in:
54
pkg/schema/parse_test.go
Normal file
54
pkg/schema/parse_test.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package schema_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"gas_stack/pkg/schema"
|
||||
)
|
||||
|
||||
func TestParseSchema(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
schema_sql, err := os.ReadFile("../../sample_data/test_schemas/food.sql")
|
||||
require.NoError(t, err)
|
||||
|
||||
db := schema.InitDB(string(schema_sql))
|
||||
schema := schema.SchemaFromDB(db)
|
||||
expected_tbls := []string{"food_types", "foods", "units", "ingredients", "recipes", "iterations", "db_version"}
|
||||
for _, tbl_name := range expected_tbls {
|
||||
_, is_ok := schema[tbl_name]
|
||||
assert.True(is_ok)
|
||||
}
|
||||
|
||||
foods := schema["foods"]
|
||||
assert.Equal(foods.TableName, "foods")
|
||||
assert.Equal(foods.TypeName, "Food")
|
||||
assert.Equal(foods.TypeIDName, "FoodID")
|
||||
assert.Equal(foods.IsStrict, true)
|
||||
assert.Len(foods.Columns, 20)
|
||||
assert.Equal(foods.Columns[0].Name, "rowid")
|
||||
assert.Equal(foods.Columns[0].Type, "integer")
|
||||
assert.Equal(foods.Columns[0].IsNotNull, false) // Explicit not-null
|
||||
assert.Equal(foods.Columns[0].IsPrimaryKey, true)
|
||||
assert.Equal(foods.Columns[0].IsForeignKey, false)
|
||||
assert.Equal(foods.Columns[1].Name, "name")
|
||||
assert.Equal(foods.Columns[1].Type, "text")
|
||||
assert.Equal(foods.Columns[1].IsNotNull, true)
|
||||
assert.Equal(foods.Columns[1].HasDefaultValue, false)
|
||||
assert.Equal(foods.Columns[1].IsPrimaryKey, false)
|
||||
assert.Equal(foods.Columns[16].Name, "mass")
|
||||
assert.Equal(foods.Columns[16].Type, "real")
|
||||
assert.Equal(foods.Columns[16].HasDefaultValue, true)
|
||||
assert.Equal(foods.Columns[16].DefaultValue, "100")
|
||||
|
||||
ingredients := schema["ingredients"]
|
||||
assert.Equal(ingredients.Columns[0].Name, "rowid")
|
||||
assert.Equal(ingredients.Columns[0].IsPrimaryKey, true)
|
||||
assert.Equal(ingredients.Columns[1].Name, "food_id")
|
||||
assert.Equal(ingredients.Columns[1].IsForeignKey, true)
|
||||
assert.Equal(ingredients.Columns[1].ForeignKeyTargetTable, "foods")
|
||||
assert.Equal(ingredients.Columns[1].ForeignKeyTargetColumn, "rowid")
|
||||
}
|
||||
Reference in New Issue
Block a user