github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/version_history_test.go (about)

     1  package model
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/evergreen-ci/evergreen"
     7  	"github.com/evergreen-ci/evergreen/db"
     8  	"github.com/evergreen-ci/evergreen/model/build"
     9  	"github.com/evergreen-ci/evergreen/model/version"
    10  	. "github.com/smartystreets/goconvey/convey"
    11  )
    12  
    13  func init() {
    14  	db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(taskQueueTestConf))
    15  }
    16  
    17  func TestFindLastPassingVersionForBuildVariants(t *testing.T) {
    18  	Convey("works", t, func() {
    19  		So(db.Clear(TaskQueuesCollection), ShouldBeNil)
    20  
    21  		project := "MyProject"
    22  		bv1 := "linux"
    23  		bv2 := "windows"
    24  		projectObj := Project{
    25  			Identifier: project,
    26  		}
    27  
    28  		insertVersion("1", 1, project)
    29  		insertVersion("2", 2, project)
    30  		insertVersion("3", 3, project)
    31  
    32  		insertBuild("1a", project, bv1, evergreen.BuildSucceeded, 1)
    33  		insertBuild("1b", project, bv2, evergreen.BuildSucceeded, 1)
    34  
    35  		insertBuild("2a", project, bv1, evergreen.BuildSucceeded, 2)
    36  		insertBuild("2b", project, bv2, evergreen.BuildSucceeded, 2)
    37  
    38  		insertBuild("3a", project, bv1, evergreen.BuildSucceeded, 3)
    39  		insertBuild("3b", project, bv2, evergreen.BuildFailed, 3)
    40  
    41  		version, err := FindLastPassingVersionForBuildVariants(&projectObj, []string{bv1, bv2})
    42  
    43  		So(err, ShouldBeNil)
    44  		So(version, ShouldNotBeNil)
    45  		So(version.Id, ShouldEqual, "2")
    46  		So(version.RevisionOrderNumber, ShouldEqual, 2)
    47  	})
    48  }
    49  
    50  func insertBuild(id string, project string, buildVariant string, status string,
    51  	order int) {
    52  	b := &build.Build{
    53  		Id:                  id,
    54  		Project:             project,
    55  		BuildVariant:        buildVariant,
    56  		Status:              status,
    57  		Requester:           evergreen.RepotrackerVersionRequester,
    58  		RevisionOrderNumber: order,
    59  	}
    60  	So(b.Insert(), ShouldBeNil)
    61  }
    62  
    63  func insertVersion(id string, order int, project string) {
    64  	v := &version.Version{
    65  		Id:                  id,
    66  		RevisionOrderNumber: order,
    67  		Identifier:          project,
    68  		Requester:           evergreen.RepotrackerVersionRequester,
    69  	}
    70  	So(v.Insert(), ShouldBeNil)
    71  }