コード例 #1
0
        public async Task When_raising_future_event()
        {
            var scheduledTime = DateTime.Now.AddSeconds(200);
            var testCommand   = new ScheduleEventInFutureCommand(scheduledTime, Guid.NewGuid().ToString(), "test value");

            var futureEventEnvelop =
                (await Node.Prepare(testCommand).Expect <FutureEventScheduledEvent>().Execute())
                .Message <FutureEventScheduledEvent>();

            var cancelFutureEventCommand = new CancelFutureEventCommand(testCommand.AggregateId, testCommand.Value);

            var futureEventCancelation =
                (await Node.Prepare(cancelFutureEventCommand).Expect <FutureEventCanceledEvent>().Execute())
                .Message <FutureEventCanceledEvent>();

            //Cancelation_event_has_same_id_as_future_event()
            Assert.Equal(futureEventEnvelop.Id, futureEventCancelation.FutureEventId);
            //Scheduler_does_not_contain_job_for_future_event()
            var scheduler = Node.System.GetExtension <SchedulingExtension>().Scheduler;

            //scheduler needs time to cancel the event
            //TODO: remove sleep to explicit wait
            await Task.Delay(2000);

            var scheduleKey = FutureEventsSchedulingMessageHandler.CreateScheduleKey(futureEventEnvelop.Id,
                                                                                     testCommand.AggregateId,
                                                                                     nameof(TestFutureEventsAggregate));

            var jobKey = new JobKey(scheduleKey.Name, scheduleKey.Group);

            Assert.False(await scheduler.CheckExists(jobKey));
        }
        public async Task When_raising_future_event()
        {
            _scheduledTime = DateTime.Now.AddSeconds(200);
            _testCommand   = new ScheduleEventInFutureCommand(_scheduledTime, Guid.NewGuid(), "test value");

            _futureEventEnvelop = (await GridNode.PrepareCommand(_testCommand)
                                   .Expect <FutureEventScheduledEvent>()
                                   .Execute())
                                  .Message <FutureEventScheduledEvent>();

            _cancelFutureEventCommand = new CancelFutureEventCommand(_testCommand.AggregateId, _testCommand.Value);

            _futureEventCancelation = (await GridNode.PrepareCommand(_cancelFutureEventCommand)
                                       .Expect <FutureEventCanceledEvent>()
                                       .Execute())
                                      .Message <FutureEventCanceledEvent>();
        }