public async Task Handle(MxScheduledReminder message)
        {
            string        domainName = message.ResourceId.ToLower();
            MxEntityState state      = await LoadState(domainName, nameof(message));

            await _dao.UpdateState(domainName, MxState.PollPending);

            _log.LogInformation($"Updated MxEntity.MxState from {state.MxState} to {MxState.PollPending} for {domainName}.");

            Message mxPollPending = new MxPollPending(domainName);

            _dispatcher.Dispatch(mxPollPending, _mxEntityConfig.SnsTopicArn);
            _log.LogInformation(
                $"An MxPollPending message for Domain: {domainName} has been dispatched to SnsTopic: {_mxEntityConfig.SnsTopicArn}");
        }
Example #2
0
        public async Task ShouldDispatchPollPendingWhenScheduledReminderReceived()
        {
            string        domainName  = "testDomainName";
            string        snsTopicArn = "SnsTopicArn";
            MxEntityState stateFromDb = new MxEntityState(domainName.ToLower())
            {
                MxState = MxState.Created
            };

            string expectedDomainName = "testdomainname";

            A.CallTo(() => _dao.Get(expectedDomainName)).Returns(stateFromDb);
            A.CallTo(() => _mxEntityConfig.SnsTopicArn).Returns(snsTopicArn);

            await _mxEntity.Handle(new MxScheduledReminder(Guid.NewGuid().ToString(), domainName));

            A.CallTo(() => _dao.UpdateState(expectedDomainName, MxState.PollPending)).MustHaveHappenedOnceExactly();
            A.CallTo(() => _dispatcher.Dispatch(A <MxPollPending> .That.Matches(entity => entity.Id == domainName.ToLower()),
                                                snsTopicArn)).MustHaveHappenedOnceExactly();
        }