It("returns the event", func() { event, err := eventSource.Next() Expect(err).NotTo(HaveOccurred()) desiredLRPChangeEvent, ok := event.(*models.DesiredLRPChangedEvent) Expect(ok).To(BeTrue()) Expect(desiredLRPChangeEvent).To(Equal(expectedEvent)) }) }) Context("when receiving a DesiredLRPRemovedEvent", func() { var expectedEvent *models.DesiredLRPRemovedEvent BeforeEach(func() { expectedEvent = models.NewDesiredLRPRemovedEvent(desiredLRP) payload, err := proto.Marshal(expectedEvent) Expect(err).NotTo(HaveOccurred()) payload = []byte(base64.StdEncoding.EncodeToString(payload)) fakeRawEventSource.NextReturns( sse.Event{ ID: "sup", Name: string(expectedEvent.EventType()), Data: payload, }, nil, ) }) It("returns the event", func() {
desiredLRP = &models.DesiredLRP{ Action: models.WrapAction(&models.RunAction{ User: "******", Path: "ls", }), Domain: "tests", ProcessGuid: expectedProcessGuid, Ports: []uint32{expectedContainerPort}, Routes: &routes, LogGuid: logGuid, ModificationTag: &models.ModificationTag{Epoch: "defg", Index: 2}, } }) JustBeforeEach(func() { nextEvent.Store(EventHolder{models.NewDesiredLRPRemovedEvent(desiredLRP)}) }) It("should remove the routes from the table", func() { Eventually(table.RemoveRoutesCallCount).Should(Equal(1)) key, modTag := table.RemoveRoutesArgsForCall(0) Expect(key).To(Equal(expectedRoutingKey)) Expect(modTag).To(Equal(desiredLRP.ModificationTag)) }) It("should emit whatever the table tells it to emit", func() { Eventually(emitter.EmitCallCount).Should(Equal(2)) messagesToEmit := emitter.EmitArgsForCall(1) Expect(messagesToEmit).To(Equal(dummyMessagesToEmit)) })