public async Task Process() { var data = Guid.NewGuid(); var msg = new BufferedMessage() { ReleaseAt = DateTime.UtcNow, Data = JsonConvert.SerializeObject(data), }; var handler = Substitute.For<IBusEventHandler<Guid>>(); handler.Process(data).Returns(Task.FromResult(true)); var sleep = Substitute.For<ISleep>(); sleep.Until(msg.ReleaseAt); var h = new BufferedMessageEventHandler<Guid>(handler, sleep); var s = await h.Process(msg); Assert.IsTrue(s); sleep.Received().Until(msg.ReleaseAt); handler.Received().Process(data); }
/// <summary> /// Send Message for Buffer /// </summary> /// <param name="message">Message</param> /// <param name="enqueueAt">Schedule for Enqueue</param> /// <param name="offset">Offset</param> /// <returns>Task</returns> public virtual async Task SendBuffered(object data, DateTime releaseAt, sbyte offset = BufferedOffset) { var message = new BufferedMessage { Data = null == data ? null : JsonConvert.SerializeObject(data), ReleaseAt = releaseAt, }; await this.Send(message, releaseAt.AddSeconds(offset)); }