feat: services: crus, migrations
This commit is contained in:
BIN
internal/dal/gen_test.db
Normal file
BIN
internal/dal/gen_test.db
Normal file
Binary file not shown.
118
internal/dal/gen_test.go
Normal file
118
internal/dal/gen_test.go
Normal file
@@ -0,0 +1,118 @@
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
|
||||
package dal
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Input struct {
|
||||
Args []interface{}
|
||||
}
|
||||
|
||||
type Expectation struct {
|
||||
Ret []interface{}
|
||||
}
|
||||
|
||||
type TestCase struct {
|
||||
Input
|
||||
Expectation
|
||||
}
|
||||
|
||||
const _gen_test_db_name = "gen_test.db"
|
||||
|
||||
var _gen_test_db *gorm.DB
|
||||
var _gen_test_once sync.Once
|
||||
|
||||
func init() {
|
||||
InitializeDB()
|
||||
_gen_test_db.AutoMigrate(&_another{})
|
||||
}
|
||||
|
||||
func InitializeDB() {
|
||||
_gen_test_once.Do(func() {
|
||||
var err error
|
||||
_gen_test_db, err = gorm.Open(sqlite.Open(_gen_test_db_name), &gorm.Config{})
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("open sqlite %q fail: %w", _gen_test_db_name, err))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func assert(t *testing.T, methodName string, res, exp interface{}) {
|
||||
if !reflect.DeepEqual(res, exp) {
|
||||
t.Errorf("%v() gotResult = %v, want %v", methodName, res, exp)
|
||||
}
|
||||
}
|
||||
|
||||
type _another struct {
|
||||
ID uint64 `gorm:"primaryKey"`
|
||||
}
|
||||
|
||||
func (*_another) TableName() string { return "another_for_unit_test" }
|
||||
|
||||
func Test_Available(t *testing.T) {
|
||||
if !Use(_gen_test_db).Available() {
|
||||
t.Errorf("query.Available() == false")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_WithContext(t *testing.T) {
|
||||
query := Use(_gen_test_db)
|
||||
if !query.Available() {
|
||||
t.Errorf("query Use(_gen_test_db) fail: query.Available() == false")
|
||||
}
|
||||
|
||||
type Content string
|
||||
var key, value Content = "gen_tag", "unit_test"
|
||||
qCtx := query.WithContext(context.WithValue(context.Background(), key, value))
|
||||
|
||||
for _, ctx := range []context.Context{
|
||||
qCtx.Post.UnderlyingDB().Statement.Context,
|
||||
} {
|
||||
if v := ctx.Value(key); v != value {
|
||||
t.Errorf("get value from context fail, expect %q, got %q", value, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_Transaction(t *testing.T) {
|
||||
query := Use(_gen_test_db)
|
||||
if !query.Available() {
|
||||
t.Errorf("query Use(_gen_test_db) fail: query.Available() == false")
|
||||
}
|
||||
|
||||
err := query.Transaction(func(tx *Query) error { return nil })
|
||||
if err != nil {
|
||||
t.Errorf("query.Transaction execute fail: %s", err)
|
||||
}
|
||||
|
||||
tx := query.Begin()
|
||||
|
||||
err = tx.SavePoint("point")
|
||||
if err != nil {
|
||||
t.Errorf("query tx SavePoint fail: %s", err)
|
||||
}
|
||||
err = tx.RollbackTo("point")
|
||||
if err != nil {
|
||||
t.Errorf("query tx RollbackTo fail: %s", err)
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
t.Errorf("query tx Commit fail: %s", err)
|
||||
}
|
||||
|
||||
err = query.Begin().Rollback()
|
||||
if err != nil {
|
||||
t.Errorf("query tx Rollback fail: %s", err)
|
||||
}
|
||||
}
|
||||
145
internal/dal/posts.gen_test.go
Normal file
145
internal/dal/posts.gen_test.go
Normal file
@@ -0,0 +1,145 @@
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
// Code generated by gorm.io/gen. DO NOT EDIT.
|
||||
|
||||
package dal
|
||||
|
||||
import (
|
||||
"app/internal/models"
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gen/field"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
func init() {
|
||||
InitializeDB()
|
||||
err := _gen_test_db.AutoMigrate(&models.Post{})
|
||||
if err != nil {
|
||||
fmt.Printf("Error: AutoMigrate(&models.Post{}) fail: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_postQuery(t *testing.T) {
|
||||
post := newPost(_gen_test_db)
|
||||
post = *post.As(post.TableName())
|
||||
_do := post.WithContext(context.Background()).Debug()
|
||||
|
||||
primaryKey := field.NewString(post.TableName(), clause.PrimaryKey)
|
||||
_, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete()
|
||||
if err != nil {
|
||||
t.Error("clean table <posts> fail:", err)
|
||||
return
|
||||
}
|
||||
|
||||
_, ok := post.GetFieldByName("")
|
||||
if ok {
|
||||
t.Error("GetFieldByName(\"\") from post success")
|
||||
}
|
||||
|
||||
err = _do.Create(&models.Post{})
|
||||
if err != nil {
|
||||
t.Error("create item in table <posts> fail:", err)
|
||||
}
|
||||
|
||||
err = _do.Save(&models.Post{})
|
||||
if err != nil {
|
||||
t.Error("create item in table <posts> fail:", err)
|
||||
}
|
||||
|
||||
err = _do.CreateInBatches([]*models.Post{{}, {}}, 10)
|
||||
if err != nil {
|
||||
t.Error("create item in table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Select(post.ALL).Take()
|
||||
if err != nil {
|
||||
t.Error("Take() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.First()
|
||||
if err != nil {
|
||||
t.Error("First() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Last()
|
||||
if err != nil {
|
||||
t.Error("First() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil })
|
||||
if err != nil {
|
||||
t.Error("FindInBatch() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Post{}, 10, func(tx gen.Dao, batch int) error { return nil })
|
||||
if err != nil {
|
||||
t.Error("FindInBatches() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Select(post.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find()
|
||||
if err != nil {
|
||||
t.Error("Find() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Distinct(primaryKey).Take()
|
||||
if err != nil {
|
||||
t.Error("select Distinct() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Select(post.ALL).Omit(primaryKey).Take()
|
||||
if err != nil {
|
||||
t.Error("Omit() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Group(primaryKey).Find()
|
||||
if err != nil {
|
||||
t.Error("Group() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find()
|
||||
if err != nil {
|
||||
t.Error("Scopes() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, _, err = _do.FindByPage(0, 1)
|
||||
if err != nil {
|
||||
t.Error("FindByPage() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.ScanByPage(&models.Post{}, 0, 1)
|
||||
if err != nil {
|
||||
t.Error("ScanByPage() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit()
|
||||
if err != nil {
|
||||
t.Error("FirstOrInit() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate()
|
||||
if err != nil {
|
||||
t.Error("FirstOrCreate() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
var _a _another
|
||||
var _aPK = field.NewString(_a.TableName(), "id")
|
||||
|
||||
err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{})
|
||||
if err != nil {
|
||||
t.Error("Join() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{})
|
||||
if err != nil {
|
||||
t.Error("LeftJoin() on table <posts> fail:", err)
|
||||
}
|
||||
|
||||
_, err = _do.Not().Or().Clauses().Take()
|
||||
if err != nil {
|
||||
t.Error("Not/Or/Clauses on table <posts> fail:", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user