Ω(messageBus.Subscriptions).Should(HaveKey("dea.heartbeat"))
		Ω(messageBus.Subscriptions["dea.heartbeat"]).Should(HaveLen(1))
	})

	It("should subscribe to the dea.advertise subject", func() {
		Ω(messageBus.Subscriptions).Should(HaveKey("dea.advertise"))
		Ω(messageBus.Subscriptions["dea.advertise"]).Should(HaveLen(1))
	})

	It("should start tracking store usage", func() {
		Ω(usageTracker.DidStart).Should(BeTrue())
		Ω(metricsAccountant.TrackedActualStateListenerStoreUsageFraction).Should(Equal(0.7))
	})

	It("should save heartbeats on a timer", func() {
		Ω(timeProvider.TickerDurationFor(HeartbeatSyncTimer)).Should(Equal(conf.ListenerHeartbeatSyncInterval()))
	})

	Context("when the usage tracker is nil", func() {
		It("should not track metrics (or blow up!)", func() {
			metricsAccountant.TrackedActualStateListenerStoreUsageFraction = -1.0

			listener = New(conf, messageBus, store, nil, metricsAccountant, timeProvider, logger)
			Ω(func() {
				listener.Start()
			}).ShouldNot(Panic())

			Ω(metricsAccountant.TrackedActualStateListenerStoreUsageFraction).Should(Equal(-1.0))
		})
	})
	It("To subscribe to the dea.advertise subject", func() {
		Expect(messageBus.Subscriptions("dea.advertise")).NotTo(BeNil())
		Expect(messageBus.Subscriptions("dea.advertise")).To(HaveLen(1))
	})

	It("To start tracking store usage", func() {
		Expect(usageTracker.StartTrackingUsageCallCount()).To(Equal(1))
		Expect(usageTracker.MeasureUsageCallCount()).To(Equal(1))
		Expect(metricsAccountant.TrackActualStateListenerStoreUsageFractionCallCount()).To(Equal(1))
		Expect(metricsAccountant.TrackActualStateListenerStoreUsageFractionArgsForCall(0)).To(Equal(0.7))
	})

	It("To save heartbeats on a timer", func() {
		beat()
		clock.Increment(conf.ListenerHeartbeatSyncInterval())
		Eventually(store.SyncHeartbeatsCallCount).Should(Equal(1))

		beat()
		Consistently(store.SyncHeartbeatsCallCount).Should(Equal(1))

		clock.Increment(conf.ListenerHeartbeatSyncInterval())
		Eventually(store.SyncHeartbeatsCallCount).Should(Equal(2))
	})

	Context("When it receives a dea advertisement over the message bus", func() {
		advertise := func() {
			messageBus.SubjectCallbacks("dea.advertise")[0](&nats.Msg{
				Data: []byte("doesn't matter"),
			})
		}