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}"); }
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(); }