github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/qf/submission_test.go (about) 1 package qf_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/quickfeed/quickfeed/kit/score" 8 "github.com/quickfeed/quickfeed/qf" 9 "google.golang.org/protobuf/types/known/timestamppb" 10 ) 11 12 func TestNewestSubmissionDate(t *testing.T) { 13 submission := &qf.Submission{} 14 tim := time.Now() 15 newSubmissionDate := submission.NewestSubmissionDate(tim) 16 if !newSubmissionDate.Equal(tim) { 17 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, tim) 18 } 19 20 submission = &qf.Submission{} 21 newSubmissionDate = submission.NewestSubmissionDate(tim) 22 if !newSubmissionDate.Equal(tim) { 23 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, tim) 24 } 25 26 submission = &qf.Submission{ 27 BuildInfo: &score.BuildInfo{}, 28 } 29 newSubmissionDate = submission.NewestSubmissionDate(tim) 30 if !newSubmissionDate.Equal(tim) { 31 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, tim) 32 } 33 34 submission = &qf.Submission{ 35 BuildInfo: &score.BuildInfo{ 36 SubmissionDate: ×tamppb.Timestamp{}, 37 }, 38 } 39 newSubmissionDate = submission.NewestSubmissionDate(tim) 40 if !newSubmissionDate.Equal(tim) { 41 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, tim) 42 } 43 44 // Seems like the conversion from time.Time to timestamppb.Timestamp is not 45 // exact, so we need to add a second to make sure the build date is newer. 46 buildDate := time.Now().Add(1 * time.Second) 47 submission = &qf.Submission{ 48 BuildInfo: &score.BuildInfo{ 49 SubmissionDate: timestamppb.New(buildDate), 50 }, 51 } 52 newSubmissionDate = submission.NewestSubmissionDate(tim) 53 if newSubmissionDate.Equal(tim) { 54 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, buildDate) 55 } 56 if newSubmissionDate.Before(tim) { 57 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, buildDate) 58 } 59 if newSubmissionDate.After(buildDate) { 60 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, buildDate) 61 } 62 if !newSubmissionDate.After(tim) { 63 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", tim, newSubmissionDate, buildDate) 64 } 65 66 zero := time.Time{} 67 newSubmissionDate = submission.NewestSubmissionDate(zero) 68 if newSubmissionDate.Equal(zero) { 69 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", zero, newSubmissionDate, buildDate) 70 } 71 if newSubmissionDate.Before(zero) { 72 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", zero, newSubmissionDate, buildDate) 73 } 74 if newSubmissionDate.After(buildDate) { 75 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", zero, newSubmissionDate, buildDate) 76 } 77 if !newSubmissionDate.After(zero) { 78 t.Errorf("NewestBuildDate(%v) = %v, expected '%v'\n", zero, newSubmissionDate, buildDate) 79 } 80 } 81 82 func TestByUser(t *testing.T) { 83 submission := &qf.Submission{} 84 if submission.ByUser(0) { 85 t.Errorf("ByUser(0) = true, expected false\n") 86 } 87 88 submission = &qf.Submission{ 89 UserID: 1, 90 } 91 if !submission.ByUser(1) { 92 t.Errorf("ByUser(1) = false, expected true\n") 93 } 94 95 submission = &qf.Submission{ 96 GroupID: 1, 97 } 98 if submission.ByUser(1) { 99 t.Errorf("ByUser(1) = true, expected false\n") 100 } 101 102 // submissions with both user and group ID are invalid 103 submission = &qf.Submission{ 104 UserID: 1, 105 GroupID: 2, 106 } 107 if submission.ByUser(1) { 108 t.Errorf("ByUser(1) = true, expected false\n") 109 } 110 } 111 112 func TestByGroup(t *testing.T) { 113 submission := &qf.Submission{} 114 if submission.ByGroup(0) { 115 t.Errorf("ByGroup(0) = true, expected false\n") 116 } 117 118 submission = &qf.Submission{ 119 GroupID: 1, 120 } 121 if !submission.ByGroup(1) { 122 t.Errorf("ByGroup(1) = false, expected true\n") 123 } 124 125 submission = &qf.Submission{ 126 UserID: 1, 127 } 128 if submission.ByGroup(1) { 129 t.Errorf("ByGroup(1) = true, expected false\n") 130 } 131 132 // submissions with both user and group ID are invalid 133 submission = &qf.Submission{ 134 UserID: 1, 135 GroupID: 2, 136 } 137 if submission.ByGroup(1) { 138 t.Errorf("ByGroup(1) = true, expected false\n") 139 } 140 }