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 }