38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package console_test
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.golem15.com/golem15/sm-quizzes-plugin/console"
|
|
"git.golem15.com/golem15/summercms/modules/bonfire"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestImportCommandChecksTheFileFirst(t *testing.T) {
|
|
opened := false
|
|
cmd := console.ImportCommand(func(ctx context.Context, fn func(*gorm.DB) error) error {
|
|
opened = true
|
|
return errors.New("no database in unit tests")
|
|
})
|
|
if cmd.Name != "quizzes:import" || len(cmd.Args) != 1 || !cmd.Args[0].Required || cmd.Flags[0].Name != "replace" || !cmd.Flags[0].Bare {
|
|
t.Fatalf("command = %+v", cmd)
|
|
}
|
|
call := func(args ...string) error {
|
|
var out bytes.Buffer
|
|
return bonfire.Call(context.Background(), []bonfire.Command{cmd}, "quizzes:import", args, &out)
|
|
}
|
|
if err := call("../testdata/missing.json"); err == nil || opened {
|
|
t.Errorf("missing file = %v (database opened: %v)", err, opened)
|
|
}
|
|
if err := call("../go.mod"); err == nil || !strings.Contains(err.Error(), "invalid JSON") || opened {
|
|
t.Errorf("non-JSON file = %v (database opened: %v)", err, opened)
|
|
}
|
|
if err := call("../testdata/quiz.json"); err == nil || !opened {
|
|
t.Errorf("valid file = %v, want the database opened", err)
|
|
}
|
|
}
|