package classes_test import ( "testing" "time" "git.golem15.com/golem15/sm-quizzes-plugin/classes" "git.golem15.com/golem15/sm-quizzes-plugin/models" ) func TestIsTestAndWithheld(t *testing.T) { if classes.IsTest(nil) { t.Error("IsTest(nil) = true") } for mode, want := range map[string]bool{"": false, models.ModeLearning: false, "exam": false, models.ModeTest: true} { if got := classes.IsTest(&models.Quiz{Mode: mode}); got != want { t.Errorf("IsTest(mode %q) = %v, want %v", mode, got, want) } } done := time.Now() test, learning := &models.Quiz{Mode: models.ModeTest}, &models.Quiz{Mode: models.ModeLearning} cases := []struct { name string a *models.Attempt want bool }{ {"open test", &models.Attempt{Quiz: test}, true}, {"completed test", &models.Attempt{Quiz: test, CompletedAt: &done}, false}, {"open learning", &models.Attempt{Quiz: learning}, false}, {"zero mode", &models.Attempt{Quiz: &models.Quiz{}}, false}, {"nil attempt", nil, false}, {"nil quiz", &models.Attempt{}, false}, } for _, tc := range cases { if got := classes.Withheld(tc.a); got != tc.want { t.Errorf("Withheld(%s) = %v, want %v", tc.name, got, tc.want) } } }