Files
sm-quizzes-plugin/classes/review_test.go
Jakub Zych 2fa8aa4178 feat: list, show and confirm open answers over MCP
- classes/review.go: review queue, detail and Confirm, shared by MCP and
  the admin screen; AnswerReviewed and AttemptReviewed after commit
- /api/v1/quiz-reviews routes behind the quizzes permission
- quizzes_review_list, quizzes_review_show, quizzes_review_confirm
2026-11-09 18:02:35 +01:00

41 lines
1.2 KiB
Go

package classes_test
import (
"slices"
"strings"
"testing"
"git.golem15.com/golem15/sm-quizzes-plugin/classes"
)
// TestCheckReviewStatus: "" and open list the three unreviewed statuses,
// a grading status lists itself, all lists everything (nil), and any
// other value is a problem naming the valid values.
func TestCheckReviewStatus(t *testing.T) {
open := []string{"pending", "graded", "failed"}
for in, want := range map[string][]string{
"": open,
"open": open,
" open ": open,
"pending": {"pending"},
"graded": {"graded"},
"failed": {"failed"},
"reviewed": {"reviewed"},
"all": nil,
} {
got, problems := classes.CheckReviewStatus(in)
if len(problems) != 0 {
t.Errorf("%q: problems %v", in, problems)
}
if !slices.Equal(got, want) || (want == nil) != (got == nil) {
t.Errorf("%q = %v, want %v", in, got, want)
}
}
for _, in := range []string{"done", "Open", "pending,graded"} {
got, problems := classes.CheckReviewStatus(in)
if got != nil || len(problems) != 1 || !strings.Contains(problems[0], "open, pending, graded, failed, reviewed, all") {
t.Errorf("%q = %v %v, want one problem listing the valid values", in, got, problems)
}
}
}