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

     1  package event
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/evergreen-ci/evergreen/db"
     8  	"github.com/evergreen-ci/evergreen/testutil"
     9  	. "github.com/smartystreets/goconvey/convey"
    10  )
    11  
    12  func init() {
    13  	db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(testutil.TestConfig()))
    14  }
    15  
    16  func TestLoggingDistroEvents(t *testing.T) {
    17  	Convey("When logging distro events, ", t, func() {
    18  
    19  		So(db.Clear(AllLogCollection), ShouldBeNil)
    20  
    21  		Convey("logged events should be stored and queryable in sorted order", func() {
    22  			distroId := "distro_id"
    23  			userId := "user_id"
    24  
    25  			// log some events, sleeping in between to make sure the times are different
    26  			LogDistroAdded(distroId, userId, nil)
    27  			time.Sleep(1 * time.Millisecond)
    28  			LogDistroModified(distroId, userId, "update")
    29  			time.Sleep(1 * time.Millisecond)
    30  			LogDistroRemoved(distroId, userId, nil)
    31  			time.Sleep(1 * time.Millisecond)
    32  
    33  			// fetch all the events from the database, make sure they are
    34  			// persisted correctly
    35  
    36  			eventsForDistro, err := Find(AllLogCollection, DistroEventsInOrder(distroId))
    37  			So(err, ShouldBeNil)
    38  
    39  			event := eventsForDistro[0]
    40  			So(event.EventType, ShouldEqual, EventDistroAdded)
    41  			So(event.ResourceId, ShouldEqual, distroId)
    42  
    43  			eventData, ok := event.Data.Data.(*DistroEventData)
    44  			So(ok, ShouldBeTrue)
    45  			So(eventData.ResourceType, ShouldEqual, ResourceTypeDistro)
    46  			So(eventData.UserId, ShouldEqual, userId)
    47  			So(eventData.Data, ShouldBeNil)
    48  
    49  			event = eventsForDistro[1]
    50  			So(event.EventType, ShouldEqual, EventDistroModified)
    51  			So(event.ResourceId, ShouldEqual, distroId)
    52  
    53  			eventData, ok = event.Data.Data.(*DistroEventData)
    54  			So(ok, ShouldBeTrue)
    55  			So(eventData.ResourceType, ShouldEqual, ResourceTypeDistro)
    56  			So(eventData.UserId, ShouldEqual, userId)
    57  			So(eventData.Data.(string), ShouldEqual, "update")
    58  
    59  			event = eventsForDistro[2]
    60  			So(event.EventType, ShouldEqual, EventDistroRemoved)
    61  			So(event.ResourceId, ShouldEqual, distroId)
    62  
    63  			eventData, ok = event.Data.Data.(*DistroEventData)
    64  			So(ok, ShouldBeTrue)
    65  			So(eventData.ResourceType, ShouldEqual, ResourceTypeDistro)
    66  			So(eventData.UserId, ShouldEqual, userId)
    67  			So(eventData.Data, ShouldBeNil)
    68  		})
    69  	})
    70  }