You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.4 KiB

// Copyright 2019 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package cmd
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing"
_ "github.com/mattn/go-sqlite3"
"github.com/stretchr/testify/assert"
"xorm.io/xorm"
)
var result = fmt.Sprintf(`package models
type A struct {
Id int %sxorm:"integer"%s
}
type B struct {
Id int %sxorm:"INTEGER"%s
}
`, "`", "`", "`", "`")
func TestReverse(t *testing.T) {
err := reverse("../example/goxorm.yml")
assert.NoError(t, err)
bs, err := ioutil.ReadFile("../models/models.go")
assert.NoError(t, err)
assert.EqualValues(t, result, string(bs))
}
func TestReverse2(t *testing.T) {
type Outfw struct {
Id int `xorm:"not null pk autoincr"`
Sql string `xorm:"default '' TEXT"`
Template string `xorm:"default '' TEXT"`
Filename string `xorm:"VARCHAR(50)"`
}
dir, err := ioutil.TempDir(os.TempDir(), "reverse")
assert.NoError(t, err)
e, err := xorm.NewEngine("sqlite3", filepath.Join(dir, "db.db"))
assert.NoError(t, err)
assert.NoError(t, e.Sync2(new(Outfw)))
err = reverseFromReader(strings.NewReader(`
kind: reverse
name: mydb
source:
database: sqlite3
conn_str: '../testdata/test.db'
targets:
- type: codes
include_tables:
- a
- b
exclude_tables:
- c
language: golang
output_dir: ../models
`))
assert.NoError(t, err)
}