github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/version_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/version"
     9  	"github.com/evergreen-ci/evergreen/testutil"
    10  	"github.com/mongodb/grip"
    11  	. "github.com/smartystreets/goconvey/convey"
    12  )
    13  
    14  func init() {
    15  	db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(testutil.TestConfig()))
    16  	grip.Warning(grip.SetSender(testutil.SetupTestSender("/tmp/version_test.log")))
    17  }
    18  
    19  func TestLastKnownGoodConfig(t *testing.T) {
    20  	Convey("When calling LastKnownGoodConfig..", t, func() {
    21  		identifier := "identifier"
    22  		Convey("no versions should be returned if there're no good "+
    23  			"last known configurations", func() {
    24  			v := &version.Version{
    25  				Identifier: identifier,
    26  				Requester:  evergreen.RepotrackerVersionRequester,
    27  				Errors:     []string{"error 1", "error 2"},
    28  			}
    29  			testutil.HandleTestingErr(v.Insert(), t, "Error inserting test version: %v")
    30  			lastGood, err := version.FindOne(version.ByLastKnownGoodConfig(identifier))
    31  			testutil.HandleTestingErr(err, t, "error finding last known good: %v")
    32  			So(lastGood, ShouldBeNil)
    33  		})
    34  		Convey("a version should be returned if there is a last known good configuration", func() {
    35  			v := &version.Version{
    36  				Identifier: identifier,
    37  				Requester:  evergreen.RepotrackerVersionRequester,
    38  			}
    39  			testutil.HandleTestingErr(v.Insert(), t, "Error inserting test version: %v")
    40  			lastGood, err := version.FindOne(version.ByLastKnownGoodConfig(identifier))
    41  			testutil.HandleTestingErr(err, t, "error finding last known good: %v")
    42  			So(lastGood, ShouldNotBeNil)
    43  		})
    44  		Convey("most recent version should be found if there are several recent good configs", func() {
    45  			v := &version.Version{
    46  				Id:                  "1",
    47  				Identifier:          identifier,
    48  				Requester:           evergreen.RepotrackerVersionRequester,
    49  				RevisionOrderNumber: 1,
    50  				Config:              "1",
    51  			}
    52  			testutil.HandleTestingErr(v.Insert(), t, "Error inserting test version: %v")
    53  			v.Id = "5"
    54  			v.RevisionOrderNumber = 5
    55  			v.Config = "5"
    56  			testutil.HandleTestingErr(v.Insert(), t, "Error inserting test version: %v")
    57  			v.Id = "2"
    58  			v.RevisionOrderNumber = 2
    59  			v.Config = "2"
    60  			testutil.HandleTestingErr(v.Insert(), t, "Error inserting test version: %v")
    61  			lastGood, err := version.FindOne(version.ByLastKnownGoodConfig(identifier))
    62  			testutil.HandleTestingErr(err, t, "error finding last known good: %v")
    63  			So(lastGood, ShouldNotBeNil)
    64  			So(lastGood.Config, ShouldEqual, "5")
    65  		})
    66  		Reset(func() {
    67  			So(db.Clear(version.Collection), ShouldBeNil)
    68  		})
    69  	})
    70  }