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.
172 lines
5.1 KiB
172 lines
5.1 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 (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestReverseSimple(t *testing.T) {
|
|
err := reverseFromConfig("../example/simple.yml")
|
|
assert.NoError(t, err)
|
|
|
|
outputBytes, err := ioutil.ReadFile("../models/simple/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedOutputBytes, err := ioutil.ReadFile("../models/simple/simple-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedOutputBytes), string(outputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
if !t.Failed() {
|
|
os.Remove("../models/simple/models.go")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestReverseMultiple(t *testing.T) {
|
|
err := reverseFromConfig("../example/multiple.yml")
|
|
assert.NoError(t, err)
|
|
|
|
oneOutputBytes, err := ioutil.ReadFile("../models/multiple/one/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedOneOutputBytes, err := ioutil.ReadFile("../models/multiple/one/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedOneOutputBytes), string(oneOutputBytes))
|
|
|
|
twoOutputBytes, err := ioutil.ReadFile("../models/multiple/two/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedTwoOutputBytes, err := ioutil.ReadFile("../models/multiple/two/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedTwoOutputBytes), string(twoOutputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
if !t.Failed() {
|
|
os.Remove("../models/multiple/one/models.go")
|
|
os.Remove("../models/multiple/two/models.go")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestReverseMultipleTarget(t *testing.T) {
|
|
err := reverseFromConfig("../example/multiple-target.yml")
|
|
assert.NoError(t, err)
|
|
|
|
oneOutputBytes, err := ioutil.ReadFile("../models/multiple-target/one/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedOneOutputBytes, err := ioutil.ReadFile("../models/multiple-target/one/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedOneOutputBytes), string(oneOutputBytes))
|
|
|
|
twoOutputBytes, err := ioutil.ReadFile("../models/multiple-target/two/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedTwoOutputBytes, err := ioutil.ReadFile("../models/multiple-target/two/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedTwoOutputBytes), string(twoOutputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
if !t.Failed() {
|
|
os.Remove("../models/multiple-target/one/models.go")
|
|
os.Remove("../models/multiple-target/two/models.go")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestReverseIncludeExclude(t *testing.T) {
|
|
err := reverseFromConfig("../example/include-exclude.yml")
|
|
assert.NoError(t, err)
|
|
|
|
incOnlyOutputBytes, err := ioutil.ReadFile("../models/include-exclude/include-only/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedIncOnlyOutputBytes, err := ioutil.ReadFile("../models/include-exclude/include-only/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedIncOnlyOutputBytes), string(incOnlyOutputBytes))
|
|
|
|
excOnlyOutputBytes, err := ioutil.ReadFile("../models/include-exclude/exclude-only/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedExcOnlyOutputBytes, err := ioutil.ReadFile("../models/include-exclude/exclude-only/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedExcOnlyOutputBytes), string(excOnlyOutputBytes))
|
|
|
|
bothOutputBytes, err := ioutil.ReadFile("../models/include-exclude/both/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedBothOutputBytes, err := ioutil.ReadFile("../models/include-exclude/both/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedBothOutputBytes), string(bothOutputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
os.Remove("../models/include-exclude/include-only/models.go")
|
|
os.Remove("../models/include-exclude/exclude-only/models.go")
|
|
os.Remove("../models/include-exclude/both/models.go")
|
|
})
|
|
}
|
|
|
|
func TestReverseExplicitTableName(t *testing.T) {
|
|
err := reverseFromConfig("../example/explicit-table-name.yml")
|
|
assert.NoError(t, err)
|
|
|
|
outputBytes, err := ioutil.ReadFile("../models/explicit-table-name/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedOutputBytes, err := ioutil.ReadFile("../models/explicit-table-name/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedOutputBytes), string(outputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
if !t.Failed() {
|
|
os.Remove("../models/explicit-table-name/models.go")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestReverseExplicitColumnName(t *testing.T) {
|
|
err := reverseFromConfig("../example/explicit-column-name.yml")
|
|
assert.NoError(t, err)
|
|
|
|
outputBytes, err := ioutil.ReadFile("../models/explicit-column-name/models.go")
|
|
assert.NoError(t, err)
|
|
|
|
// expected output
|
|
expectedOutputBytes, err := ioutil.ReadFile("../models/explicit-column-name/expected-models.go")
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, string(expectedOutputBytes), string(outputBytes))
|
|
|
|
t.Cleanup(func() {
|
|
if !t.Failed() {
|
|
os.Remove("../models/explicit-column-name/models.go")
|
|
}
|
|
})
|
|
}
|