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

// 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")
}
})
}