public void TimeoutHandle_CheckStatus_SmsSent() { var timeout = new SmsPendingTimeout(); var sendOneMessageNow = new SendOneMessageNow { ConfirmationEmailAddress = "*****@*****.**", CorrelationId = Guid.NewGuid(), SmsData = new SmsData("mobile", "message"), SmsMetaData = new SmsMetaData { Tags = new List<string> { "tag1", "tag2" }, Topic = "topic" } }; var data = new SmsActionerData { Id = Guid.NewGuid(), OriginalMessage = sendOneMessageNow, Price = 0.06m, SmsRequestId = "123" }; var smsService = MockRepository.GenerateMock<ISmsService>(); var smsSent = new SmsSent("doesn't matter", DateTime.Now); smsService .Expect(s => s.CheckStatus(data.SmsRequestId)) .Return(smsSent); Test.Initialize(); Test.Saga<SmsActioner.SmsActioner>() .WithExternalDependencies(a => { a.SmsService = smsService; a.Data = data; }) .WhenReceivesMessageFrom("somewhere") .ExpectPublish<MessageSent>(message => message.ConfirmationEmailAddress == sendOneMessageNow.ConfirmationEmailAddress && message.CorrelationId == sendOneMessageNow.CorrelationId && message.SmsData == sendOneMessageNow.SmsData && message.SmsMetaData == sendOneMessageNow.SmsMetaData && message.ConfirmationData.Price == data.Price && message.ConfirmationData.Receipt == data.SmsRequestId && message.ConfirmationData.SentAtUtc == smsSent.SentAtUtc ) .When(a => a.Timeout(timeout)) .AssertSagaCompletionIs(true); smsService.VerifyAllExpectations(); }
public void Timeout(SmsPendingTimeout state) { var smsStatus = SmsService.CheckStatus(Data.SmsRequestId); ProcessConfirmationData(smsStatus); }
public void TimeoutHandle_CheckStatus_SmsQueued_RequestsTimeout() { var timeout = new SmsPendingTimeout(); var sendOneMessageNow = new SendOneMessageNow(); var data = new SmsActionerData { Id = Guid.NewGuid(), OriginalMessage = sendOneMessageNow, Price = 0.06m, SmsRequestId = "123", NumberOfTimeoutRequests = 1 }; var smsService = MockRepository.GenerateMock<ISmsService>(); var timeoutCalculator = MockRepository.GenerateMock<ITimeoutCalculator>(); var smsQueued = new SmsQueued(data.SmsRequestId); smsService .Expect(s => s.CheckStatus(data.SmsRequestId)) .Return(smsQueued); var timeoutTimespan = new TimeSpan(); timeoutCalculator.Expect(t => t.RequiredTimeout(data.NumberOfTimeoutRequests)).Return(timeoutTimespan); Test.Initialize(); Test.Saga<SmsActioner.SmsActioner>() .WithExternalDependencies(a => { a.SmsService = smsService; a.Data = data; a.TimeoutCalculator = timeoutCalculator; }) .WhenReceivesMessageFrom("somewhere") .ExpectTimeoutToBeSetIn<SmsPendingTimeout>((timeoutMessage, timespan) => timespan == timeoutTimespan) .When(a => a.Timeout(timeout)) .AssertSagaCompletionIs(false); Assert.That(data.NumberOfTimeoutRequests, Is.EqualTo(2)); smsService.VerifyAllExpectations(); timeoutCalculator.VerifyAllExpectations(); }