163 lines
4.3 KiB
Go
163 lines
4.3 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestRunMerge_FromListMutuallyExclusiveWithSourcePath(t *testing.T) {
|
|
saved := saveMergeState()
|
|
defer restoreMergeState(saved)
|
|
|
|
dir := t.TempDir()
|
|
file := filepath.Join(dir, "schema.json")
|
|
writeTestJSON(t, file, []string{"users"})
|
|
|
|
mergeTargetType = "json"
|
|
mergeTargetPath = file
|
|
mergeTargetConn = ""
|
|
mergeSourceType = "json"
|
|
mergeSourcePath = file
|
|
mergeSourceConn = ""
|
|
mergeFromList = []string{file}
|
|
mergeOutputType = "json"
|
|
mergeOutputPath = filepath.Join(dir, "out.json")
|
|
mergeOutputConn = ""
|
|
mergeSkipTables = ""
|
|
mergeReportPath = ""
|
|
|
|
err := runMerge(nil, nil)
|
|
if err == nil {
|
|
t.Error("expected error when --source-path and --from-list are both set")
|
|
}
|
|
}
|
|
|
|
func TestRunMerge_FromListSingleFile(t *testing.T) {
|
|
saved := saveMergeState()
|
|
defer restoreMergeState(saved)
|
|
|
|
dir := t.TempDir()
|
|
targetFile := filepath.Join(dir, "target.json")
|
|
sourceFile := filepath.Join(dir, "source.json")
|
|
outFile := filepath.Join(dir, "output.json")
|
|
writeTestJSON(t, targetFile, []string{"users"})
|
|
writeTestJSON(t, sourceFile, []string{"posts"})
|
|
|
|
mergeTargetType = "json"
|
|
mergeTargetPath = targetFile
|
|
mergeTargetConn = ""
|
|
mergeSourceType = "json"
|
|
mergeSourcePath = ""
|
|
mergeSourceConn = ""
|
|
mergeFromList = []string{sourceFile}
|
|
mergeOutputType = "json"
|
|
mergeOutputPath = outFile
|
|
mergeOutputConn = ""
|
|
mergeSkipTables = ""
|
|
mergeReportPath = ""
|
|
|
|
if err := runMerge(nil, nil); err != nil {
|
|
t.Fatalf("runMerge() error = %v", err)
|
|
}
|
|
if _, err := os.Stat(outFile); os.IsNotExist(err) {
|
|
t.Error("expected output file to be created")
|
|
}
|
|
}
|
|
|
|
func TestRunMerge_FromListMultipleFiles(t *testing.T) {
|
|
saved := saveMergeState()
|
|
defer restoreMergeState(saved)
|
|
|
|
dir := t.TempDir()
|
|
targetFile := filepath.Join(dir, "target.json")
|
|
source1 := filepath.Join(dir, "source1.json")
|
|
source2 := filepath.Join(dir, "source2.json")
|
|
outFile := filepath.Join(dir, "output.json")
|
|
writeTestJSON(t, targetFile, []string{"users"})
|
|
writeTestJSON(t, source1, []string{"posts"})
|
|
writeTestJSON(t, source2, []string{"comments"})
|
|
|
|
mergeTargetType = "json"
|
|
mergeTargetPath = targetFile
|
|
mergeTargetConn = ""
|
|
mergeSourceType = "json"
|
|
mergeSourcePath = ""
|
|
mergeSourceConn = ""
|
|
mergeFromList = []string{source1, source2}
|
|
mergeOutputType = "json"
|
|
mergeOutputPath = outFile
|
|
mergeOutputConn = ""
|
|
mergeSkipTables = ""
|
|
mergeReportPath = ""
|
|
|
|
if err := runMerge(nil, nil); err != nil {
|
|
t.Fatalf("runMerge() error = %v", err)
|
|
}
|
|
if _, err := os.Stat(outFile); os.IsNotExist(err) {
|
|
t.Error("expected output file to be created")
|
|
}
|
|
}
|
|
|
|
func TestRunMerge_FromListPathWithSpaces(t *testing.T) {
|
|
saved := saveMergeState()
|
|
defer restoreMergeState(saved)
|
|
|
|
spacedDir := filepath.Join(t.TempDir(), "my schema files")
|
|
if err := os.MkdirAll(spacedDir, 0755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
targetFile := filepath.Join(spacedDir, "target schema.json")
|
|
sourceFile := filepath.Join(spacedDir, "source schema.json")
|
|
outFile := filepath.Join(spacedDir, "merged output.json")
|
|
writeTestJSON(t, targetFile, []string{"users"})
|
|
writeTestJSON(t, sourceFile, []string{"comments"})
|
|
|
|
mergeTargetType = "json"
|
|
mergeTargetPath = targetFile
|
|
mergeTargetConn = ""
|
|
mergeSourceType = "json"
|
|
mergeSourcePath = ""
|
|
mergeSourceConn = ""
|
|
mergeFromList = []string{sourceFile}
|
|
mergeOutputType = "json"
|
|
mergeOutputPath = outFile
|
|
mergeOutputConn = ""
|
|
mergeSkipTables = ""
|
|
mergeReportPath = ""
|
|
|
|
if err := runMerge(nil, nil); err != nil {
|
|
t.Fatalf("runMerge() with spaced paths error = %v", err)
|
|
}
|
|
if _, err := os.Stat(outFile); os.IsNotExist(err) {
|
|
t.Error("expected output file to be created")
|
|
}
|
|
}
|
|
|
|
func TestRunMerge_FromListMissingSourceType(t *testing.T) {
|
|
saved := saveMergeState()
|
|
defer restoreMergeState(saved)
|
|
|
|
dir := t.TempDir()
|
|
file := filepath.Join(dir, "schema.json")
|
|
writeTestJSON(t, file, []string{"users"})
|
|
|
|
mergeTargetType = "json"
|
|
mergeTargetPath = file
|
|
mergeTargetConn = ""
|
|
mergeSourceType = "json"
|
|
mergeSourcePath = ""
|
|
mergeSourceConn = ""
|
|
mergeFromList = []string{} // empty list, no source-path either
|
|
mergeOutputType = "json"
|
|
mergeOutputPath = filepath.Join(dir, "out.json")
|
|
mergeOutputConn = ""
|
|
mergeSkipTables = ""
|
|
mergeReportPath = ""
|
|
|
|
err := runMerge(nil, nil)
|
|
if err == nil {
|
|
t.Error("expected error when neither --source-path nor --from-list is provided")
|
|
}
|
|
}
|