Files
sm-quizzes-plugin/console/import_test.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)
}
}