github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/qf/assignment_test.go (about) 1 package qf_test 2 3 import ( 4 "testing" 5 6 "github.com/quickfeed/quickfeed/qf" 7 ) 8 9 func TestIsApproved(t *testing.T) { 10 a := &qf.Assignment{} 11 b := &qf.Assignment{ 12 ScoreLimit: 80, 13 } 14 c := &qf.Assignment{ 15 AutoApprove: true, 16 ScoreLimit: 80, 17 } 18 d := &qf.Assignment{ 19 IsGroupLab: false, // making it explicit that it isn't a group lab 20 AutoApprove: true, 21 ScoreLimit: 90, 22 } 23 e := &qf.Assignment{ 24 IsGroupLab: true, // making it explicit that it is a group lab 25 AutoApprove: true, 26 ScoreLimit: 90, 27 } 28 isApprovedTests := []struct { 29 name string 30 assignment *qf.Assignment 31 submission *qf.Submission 32 score uint32 33 expected qf.Submission_Status 34 }{ 35 { 36 name: "Assignment:ScoreLimit=0:NoAutoApprove,Submission:Status=NONE:OldScore=50,NewScore:55", 37 assignment: a, 38 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 39 score: 55, 40 expected: qf.Submission_NONE, 41 }, 42 { 43 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=NONE:OldScore=50,NewScore:55", 44 assignment: b, 45 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 46 score: 55, 47 expected: qf.Submission_NONE, 48 }, 49 { 50 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=NONE:OldScore=50,NewScore:80", 51 assignment: b, 52 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 53 score: 80, 54 expected: qf.Submission_NONE, 55 }, 56 { 57 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=NONE:OldScore=80,NewScore:75", 58 assignment: b, 59 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 80}, 60 score: 75, 61 expected: qf.Submission_NONE, 62 }, 63 { 64 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=NONE:OldScore=80,NewScore:85", 65 assignment: b, 66 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 80}, 67 score: 85, 68 expected: qf.Submission_NONE, 69 }, 70 { 71 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=REJECTED:OldScore=50,NewScore:80", 72 assignment: b, 73 submission: &qf.Submission{Status: qf.Submission_REJECTED, Score: 50}, 74 score: 80, 75 expected: qf.Submission_REJECTED, 76 }, 77 { 78 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=REVISION:OldScore=50,NewScore:80", 79 assignment: b, 80 submission: &qf.Submission{Status: qf.Submission_REVISION, Score: 50}, 81 score: 80, 82 expected: qf.Submission_REVISION, 83 }, 84 { 85 name: "Assignment:ScoreLimit=80:NoAutoApprove,Submission:Status=APPROVED:OldScore=50,NewScore:80", 86 assignment: b, 87 submission: &qf.Submission{Status: qf.Submission_APPROVED, Score: 50}, 88 score: 80, 89 expected: qf.Submission_APPROVED, 90 }, 91 { 92 name: "Assignment:ScoreLimit=80:AutoApprove,Submission:Status=NONE:OldScore=50,NewScore:55", 93 assignment: c, 94 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 95 score: 55, 96 expected: qf.Submission_NONE, 97 }, 98 { 99 name: "Assignment:ScoreLimit=80:AutoApprove,Submission:Status=NONE:OldScore=50,NewScore:79", 100 assignment: c, 101 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 102 score: 79, 103 expected: qf.Submission_NONE, 104 }, 105 { 106 name: "Assignment:ScoreLimit=80:AutoApprove,Submission:Status=NONE:OldScore=50,NewScore:80", 107 assignment: c, 108 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50}, 109 score: 80, 110 expected: qf.Submission_APPROVED, 111 }, 112 { 113 name: "Assignment:ScoreLimit=80:AutoApprove,Submission:Status=APPROVED:OldScore=50,NewScore:0", 114 assignment: c, 115 submission: &qf.Submission{Status: qf.Submission_APPROVED, Score: 50}, 116 score: 0, 117 expected: qf.Submission_APPROVED, 118 }, 119 { 120 name: "Assignment:ScoreLimit=90:AutoApprove,Submission:GroupId=5:Status=NONE:OldScore=0,NewScore:50", 121 assignment: d, 122 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50, GroupID: 5}, 123 score: 50, 124 expected: qf.Submission_NONE, 125 }, 126 { 127 name: "Assignment:ScoreLimit=90:AutoApprove,Submission:GroupId=5:Status=NONE:OldScore=0,NewScore:95", 128 assignment: d, 129 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 95, GroupID: 5}, 130 score: 95, 131 expected: qf.Submission_NONE, 132 }, 133 { 134 name: "Assignment:ScoreLimit=90:AutoApprove:IsGroupLab,Submission:UserId=15:Status=NONE:OldScore=0,NewScore:50", 135 assignment: e, 136 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 50, UserID: 15}, 137 score: 50, 138 expected: qf.Submission_NONE, 139 }, 140 { 141 name: "Assignment:ScoreLimit=90:AutoApprove:IsGroupLab,Submission:UserId=15:Status=NONE:OldScore=0,NewScore:95", 142 assignment: e, 143 submission: &qf.Submission{Status: qf.Submission_NONE, Score: 95, UserID: 15}, 144 score: 95, 145 expected: qf.Submission_NONE, 146 }, 147 } 148 149 for _, test := range isApprovedTests { 150 t.Run(test.name, func(t *testing.T) { 151 got := test.assignment.IsApproved(test.submission, test.score) 152 if got != test.expected { 153 t.Errorf("IsApproved(%v, %v, %d) = %v, expected %v", test.assignment, test.submission, test.score, got, test.expected) 154 } 155 }) 156 } 157 }