public void ReminderSerializer_must_serialize_Reminder_ScheduleRepeatedly() { var expected = new Reminder.ScheduleRepeatedly("task-1", TestActor.Path, new TestMessage("hello"), DateTime.UtcNow, TimeSpan.FromMinutes(5), ack: "reply"); var actual = Roundtrip(expected); actual.Should().Be(expected); }
public void when_email_is_scheduled_is_sent_when_is_due_repeatedly() { var settings = ReminderSettings.Default .WithPersistenceId("email") .WithTickInterval(TimeSpan.FromMilliseconds(500)) .WithSnapshotInterval(5); var taskId = Guid.NewGuid().ToString(); var probe = CreateTestProbe("email-sender"); var scheduler = (TestScheduler)Sys.Scheduler; var emailScheduler = Sys.ActorOf(Props.Create(() => new EmailScheduler(settings)).WithDispatcher(CallingThreadDispatcher.Id), "email"); var when = DateTime.UtcNow.AddDays(1); var job = new ScheduleEmail("me", "you", "hi"); var ack = new Ack(taskId); var schedule = new Reminder.ScheduleRepeatedly(taskId, probe.Ref.Path, job, when, TimeSpan.FromHours(1), ack); emailScheduler.Tell(schedule, probe); probe.ExpectMsg <Ack>(x => x.Id == taskId); scheduler.AdvanceTo(when); probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To); scheduler.Advance(TimeSpan.FromHours(1)); probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To); scheduler.Advance(TimeSpan.FromHours(1)); probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To); scheduler.Advance(TimeSpan.FromHours(1)); probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To); }