github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/qf/task_test.go (about)

     1  package qf_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/google/go-cmp/cmp"
     7  	"github.com/quickfeed/quickfeed/qf"
     8  	"google.golang.org/protobuf/testing/protocmp"
     9  )
    10  
    11  // TestHasChanged tests if HasChanged returns the correct value
    12  func TestHasChanged(t *testing.T) {
    13  	tests := map[string]struct {
    14  		task1, task2 *qf.Task
    15  		want         bool
    16  	}{
    17  		"No change":             {task1: &qf.Task{Title: "Title 1", Body: "Body 1"}, task2: &qf.Task{Title: "Title 1", Body: "Body 1"}, want: false},
    18  		"Body change":           {task1: &qf.Task{Title: "Title 1", Body: "Body 1"}, task2: &qf.Task{Title: "Title 1", Body: "Body 2"}, want: true},
    19  		"Title change":          {task1: &qf.Task{Title: "Title 1", Body: "Body 1"}, task2: &qf.Task{Title: "Title 2", Body: "Body 1"}, want: true},
    20  		"Body and title change": {task1: &qf.Task{Title: "Title 1", Body: "Body 1"}, task2: &qf.Task{Title: "Title 2", Body: "Body 2"}, want: true},
    21  	}
    22  
    23  	for name, tt := range tests {
    24  		t.Run(name, func(t *testing.T) {
    25  			if got := tt.task1.HasChanged(tt.task2); tt.want != got {
    26  				t.Errorf("\ntask1.HasChanged(task2) = %t, expected %t\ntask1:\t%v\ntask2:\t%v", got, tt.want, tt.task1, tt.task2)
    27  			}
    28  		})
    29  	}
    30  }
    31  
    32  func TestMarkDeleted(t *testing.T) {
    33  	const deleteMsg = "\n**The task associated with this issue has been deleted by the teaching staff.**\n"
    34  
    35  	tests := map[string]struct {
    36  		task     *qf.Task
    37  		wantTask *qf.Task
    38  		deleted  bool
    39  	}{
    40  		"Delete task": {
    41  			task:     &qf.Task{Title: "Title 1", Body: "Body 1"},
    42  			wantTask: &qf.Task{Title: "DELETED Title 1", Body: deleteMsg + "Body 1"},
    43  			deleted:  true,
    44  		},
    45  	}
    46  	for name, tt := range tests {
    47  		t.Run(name, func(t *testing.T) {
    48  			gotTask := tt.task
    49  			gotTask.MarkDeleted()
    50  			if diff := cmp.Diff(tt.wantTask, gotTask, protocmp.Transform()); diff != "" {
    51  				t.Errorf("MarkDeleted() mismatch (-wantTask +gotTask):\n%s", diff)
    52  			}
    53  			if got := gotTask.IsDeleted(); got != tt.deleted {
    54  				t.Errorf("IsDeleted() = %t, expected %t", got, tt.deleted)
    55  			}
    56  		})
    57  	}
    58  }