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: &timestamppb.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  }