github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/rest/model/task_test.go (about)

     1  package model
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/evergreen-ci/evergreen/model/task"
     8  	. "github.com/smartystreets/goconvey/convey"
     9  )
    10  
    11  type taskCompare struct {
    12  	at APITask
    13  	st task.Task
    14  }
    15  
    16  func TestTaskBuildFromService(t *testing.T) {
    17  	Convey("With a list of models to compare", t, func() {
    18  		timeNow := time.Now()
    19  		cTime := timeNow.Add(10 * time.Minute)
    20  		dTime := timeNow.Add(11 * time.Minute)
    21  		pTime := timeNow.Add(12 * time.Minute)
    22  		sTime := timeNow.Add(13 * time.Minute)
    23  		scTime := timeNow.Add(14 * time.Minute)
    24  		fTime := timeNow.Add(15 * time.Minute)
    25  		modelPairs := []taskCompare{
    26  			{
    27  				at: APITask{
    28  					Id:            APIString("testId"),
    29  					CreateTime:    APITime(cTime),
    30  					DispatchTime:  APITime(dTime),
    31  					PushTime:      APITime(pTime),
    32  					ScheduledTime: APITime(scTime),
    33  					StartTime:     APITime(sTime),
    34  					FinishTime:    APITime(fTime),
    35  					Version:       APIString("testVersion"),
    36  					Branch:        APIString("testProject"),
    37  					Revision:      APIString("testRevision"),
    38  					Priority:      100,
    39  					Execution:     2,
    40  					Activated:     true,
    41  					ActivatedBy:   APIString("testActivator"),
    42  					BuildId:       APIString("testBuildId"),
    43  					DistroId:      APIString("testDistroId"),
    44  					BuildVariant:  APIString("testBuildVariant"),
    45  					DependsOn: []string{
    46  						"testDepends1",
    47  						"testDepends2",
    48  					},
    49  					DisplayName: APIString("testDisplayName"),
    50  					Logs: logLinks{
    51  						AllLogLink:    "url/task_log_raw/testId/2?type=ALL",
    52  						TaskLogLink:   "url/task_log_raw/testId/2?type=T",
    53  						SystemLogLink: "url/task_log_raw/testId/2?type=S",
    54  						AgentLogLink:  "url/task_log_raw/testId/2?type=E",
    55  					},
    56  				},
    57  				st: task.Task{
    58  					Id:            "testId",
    59  					Project:       "testProject",
    60  					CreateTime:    cTime,
    61  					DispatchTime:  dTime,
    62  					PushTime:      pTime,
    63  					ScheduledTime: scTime,
    64  					StartTime:     sTime,
    65  					FinishTime:    fTime,
    66  					Version:       "testVersion",
    67  					Revision:      "testRevision",
    68  					Execution:     2,
    69  					Priority:      100,
    70  					Activated:     true,
    71  					ActivatedBy:   "testActivator",
    72  					BuildId:       "testBuildId",
    73  					DistroId:      "testDistroId",
    74  					BuildVariant:  "testBuildVariant",
    75  					DependsOn: []task.Dependency{
    76  						{
    77  							TaskId: "testDepends1",
    78  						},
    79  						{
    80  							TaskId: "testDepends2",
    81  						},
    82  					},
    83  					DisplayName: "testDisplayName",
    84  				},
    85  			},
    86  			{
    87  				at: APITask{
    88  					Logs: logLinks{
    89  						AllLogLink:    "url/task_log_raw//0?type=ALL",
    90  						TaskLogLink:   "url/task_log_raw//0?type=T",
    91  						SystemLogLink: "url/task_log_raw//0?type=S",
    92  						AgentLogLink:  "url/task_log_raw//0?type=E",
    93  					},
    94  				},
    95  				st: task.Task{},
    96  			},
    97  		}
    98  		Convey("running BuildFromService(), should produce the equivalent model", func() {
    99  			for _, tc := range modelPairs {
   100  				apiTask := &APITask{}
   101  				err := apiTask.BuildFromService(&tc.st)
   102  				So(err, ShouldBeNil)
   103  				err = apiTask.BuildFromService("url")
   104  				So(err, ShouldBeNil)
   105  				So(apiTask, ShouldResemble, &tc.at)
   106  			}
   107  		})
   108  	})
   109  }