Skip to content

Commit 920cb37

Browse files
Merge pull request #37 from StuartFerguson/task/#36_sendsmsmessage
Support SMS Message Sending
2 parents 00116ee + 2e23945 commit 920cb37

File tree

60 files changed

+3582
-197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3582
-197
lines changed

MessagingService.BusinessLogic.Tests/DomainEventHanders/DomainEventHandlerResolverTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void DomainEventHandlerResolver_GetDomainEventHandlers_ResponseReceivedFr
4545
String handlerTypeName = "MessagingService.BusinessLogic.EventHandling.EmailDomainEventHandler";
4646
Dictionary<String, String[]> eventHandlerConfiguration = new Dictionary<String, String[]>();
4747

48-
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.ResponseReceivedFromProviderEvent;
48+
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.EmailResponseReceivedFromProviderEvent;
4949

5050
eventHandlerConfiguration.Add(responseReceivedFromProviderEvent.GetType().FullName, new String[] { handlerTypeName });
5151

@@ -67,7 +67,7 @@ public void DomainEventHandlerResolver_GetDomainEventHandlers_ResponseReceivedFr
6767
String handlerTypeName = "MessagingService.BusinessLogic.EventHandling.EmailDomainEventHandler";
6868
Dictionary<String, String[]> eventHandlerConfiguration = new Dictionary<String, String[]>();
6969

70-
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.ResponseReceivedFromProviderEvent;
70+
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.EmailResponseReceivedFromProviderEvent;
7171

7272
eventHandlerConfiguration.Add("RandomEvent", new String[] { handlerTypeName });
7373
Mock<IDomainEventHandler> domainEventHandler = new Mock<IDomainEventHandler>();
@@ -85,7 +85,7 @@ public void DomainEventHandlerResolver_GetDomainEventHandlers_ResponseReceivedFr
8585
{
8686
Dictionary<String, String[]> eventHandlerConfiguration = new Dictionary<String, String[]>();
8787

88-
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.ResponseReceivedFromProviderEvent;
88+
ResponseReceivedFromProviderEvent responseReceivedFromProviderEvent = TestData.EmailResponseReceivedFromProviderEvent;
8989
Mock<IDomainEventHandler> domainEventHandler = new Mock<IDomainEventHandler>();
9090

9191
Func<Type, IDomainEventHandler> createDomainEventHandlerFunc = (type) => { return domainEventHandler.Object; };

MessagingService.BusinessLogic.Tests/DomainEventHanders/EmailDomainEventHandlerTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
2727
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
2828
emailServiceProxy.Object);
2929

30-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
30+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
3131
}
3232

3333
[Fact]
@@ -42,7 +42,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
4242
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
4343
emailServiceProxy.Object);
4444

45-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
45+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
4646
}
4747

4848
[Fact]
@@ -57,7 +57,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
5757
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
5858
emailServiceProxy.Object);
5959

60-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
60+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
6161
}
6262

6363
[Fact]
@@ -72,7 +72,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
7272
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
7373
emailServiceProxy.Object);
7474

75-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
75+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
7676
}
7777

7878
[Fact]
@@ -87,7 +87,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
8787
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
8888
emailServiceProxy.Object);
8989

90-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
90+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
9191
}
9292

9393
[Fact]
@@ -102,7 +102,7 @@ public async Task EmailDomainEventHandler_Handle_ResponseReceivedFromProviderEve
102102
EmailDomainEventHandler emailDomainEventHandler = new EmailDomainEventHandler(aggregateRepository.Object,
103103
emailServiceProxy.Object);
104104

105-
await emailDomainEventHandler.Handle(TestData.ResponseReceivedFromProviderEvent, CancellationToken.None);
105+
await emailDomainEventHandler.Handle(TestData.EmailResponseReceivedFromProviderEvent, CancellationToken.None);
106106
}
107107
}
108108
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
using System;
2+
using System.Text;
3+
4+
namespace MessagingService.BusinessLogic.Tests.DomainEventHanders
5+
{
6+
using System.Threading;
7+
using BusinessLogic.Services.EmailServices;
8+
using EmailMessageAggregate;
9+
using EventHandling;
10+
using Moq;
11+
using Shared.EventStore.EventStore;
12+
using System.Threading.Tasks;
13+
using BusinessLogic.Services.SMSServices;
14+
using SMSMessageAggregate;
15+
using Testing;
16+
using Xunit;
17+
18+
public class SMSDomainEventHandlerTests
19+
{
20+
[Fact]
21+
public async Task SMSDomainEventHandler_Handle_ResponseReceivedFromProviderEvent_Delivered_EventIsHandled()
22+
{
23+
Mock<IAggregateRepository<SMSAggregate>> aggregateRepository = new Mock<IAggregateRepository<SMSAggregate>>();
24+
aggregateRepository.Setup(a => a.GetLatestVersion(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(TestData.GetSentSMSAggregate);
25+
Mock<ISMSServiceProxy> smsServiceProxy = new Mock<ISMSServiceProxy>();
26+
smsServiceProxy.Setup(e => e.GetMessageStatus(It.IsAny<String>(), It.IsAny<CancellationToken>()))
27+
.ReturnsAsync(TestData.SMSMessageStatusResponseDelivered);
28+
29+
SMSDomainEventHandler smsDomainEventHandler = new SMSDomainEventHandler(aggregateRepository.Object,
30+
smsServiceProxy.Object);
31+
32+
await smsDomainEventHandler.Handle(TestData.SMSResponseReceivedFromProviderEvent, CancellationToken.None);
33+
}
34+
35+
[Fact]
36+
public async Task SMSDomainEventHandler_Handle_ResponseReceivedFromProviderEvent_Expired_EventIsHandled()
37+
{
38+
Mock<IAggregateRepository<SMSAggregate>> aggregateRepository = new Mock<IAggregateRepository<SMSAggregate>>();
39+
aggregateRepository.Setup(a => a.GetLatestVersion(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(TestData.GetSentSMSAggregate);
40+
Mock<ISMSServiceProxy> smsServiceProxy = new Mock<ISMSServiceProxy>();
41+
smsServiceProxy.Setup(e => e.GetMessageStatus(It.IsAny<String>(), It.IsAny<CancellationToken>()))
42+
.ReturnsAsync(TestData.SMSMessageStatusResponseExpired);
43+
44+
SMSDomainEventHandler smsDomainEventHandler = new SMSDomainEventHandler(aggregateRepository.Object,
45+
smsServiceProxy.Object);
46+
47+
await smsDomainEventHandler.Handle(TestData.SMSResponseReceivedFromProviderEvent, CancellationToken.None);
48+
}
49+
50+
[Fact]
51+
public async Task SMSDomainEventHandler_Handle_ResponseReceivedFromProviderEvent_Rejected_EventIsHandled()
52+
{
53+
Mock<IAggregateRepository<SMSAggregate>> aggregateRepository = new Mock<IAggregateRepository<SMSAggregate>>();
54+
aggregateRepository.Setup(a => a.GetLatestVersion(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(TestData.GetSentSMSAggregate);
55+
Mock<ISMSServiceProxy> smsServiceProxy = new Mock<ISMSServiceProxy>();
56+
smsServiceProxy.Setup(e => e.GetMessageStatus(It.IsAny<String>(), It.IsAny<CancellationToken>()))
57+
.ReturnsAsync(TestData.SMSMessageStatusResponseRejected);
58+
59+
SMSDomainEventHandler smsDomainEventHandler = new SMSDomainEventHandler(aggregateRepository.Object,
60+
smsServiceProxy.Object);
61+
62+
await smsDomainEventHandler.Handle(TestData.SMSResponseReceivedFromProviderEvent, CancellationToken.None);
63+
}
64+
65+
[Fact]
66+
public async Task SMSDomainEventHandler_Handle_ResponseReceivedFromProviderEvent_Undelivered_EventIsHandled()
67+
{
68+
Mock<IAggregateRepository<SMSAggregate>> aggregateRepository = new Mock<IAggregateRepository<SMSAggregate>>();
69+
aggregateRepository.Setup(a => a.GetLatestVersion(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(TestData.GetSentSMSAggregate);
70+
Mock<ISMSServiceProxy> smsServiceProxy = new Mock<ISMSServiceProxy>();
71+
smsServiceProxy.Setup(e => e.GetMessageStatus(It.IsAny<String>(), It.IsAny<CancellationToken>()))
72+
.ReturnsAsync(TestData.SMSMessageStatusResponseUndelivered);
73+
74+
SMSDomainEventHandler smsDomainEventHandler = new SMSDomainEventHandler(aggregateRepository.Object,
75+
smsServiceProxy.Object);
76+
77+
await smsDomainEventHandler.Handle(TestData.SMSResponseReceivedFromProviderEvent, CancellationToken.None);
78+
}
79+
}
80+
}

MessagingService.BusinessLogic.Tests/RequestHandlers/EmailRequestHandlerTests.cs

Lines changed: 0 additions & 34 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace MessagingService.BusinessLogic.Tests.RequestHandlers
6+
{
7+
using System.Threading;
8+
using BusinessLogic.RequestHandlers;
9+
using BusinessLogic.Requests;
10+
using BusinessLogic.Services;
11+
using Moq;
12+
using Services;
13+
using Shouldly;
14+
using Testing;
15+
using Xunit;
16+
17+
public class MessagingRequestHandlerTests
18+
{
19+
[Fact]
20+
public void MessagingRequestHandler_SendEmailRequest_IsHandled()
21+
{
22+
Mock<IMessagingDomainService> messagingDomainService = new Mock<IMessagingDomainService>();
23+
MessagingRequestHandler handler = new MessagingRequestHandler(messagingDomainService.Object);
24+
25+
SendEmailRequest command = TestData.SendEmailRequest;
26+
27+
Should.NotThrow(async () =>
28+
{
29+
await handler.Handle(command, CancellationToken.None);
30+
});
31+
32+
}
33+
34+
[Fact]
35+
public void MessagingRequestHandler_SendSMSRequest_IsHandled()
36+
{
37+
Mock<IMessagingDomainService> messagingDomainService = new Mock<IMessagingDomainService>();
38+
MessagingRequestHandler handler = new MessagingRequestHandler(messagingDomainService.Object);
39+
40+
SendSMSRequest command = TestData.SendSMSRequest;
41+
42+
Should.NotThrow(async () =>
43+
{
44+
await handler.Handle(command, CancellationToken.None);
45+
});
46+
47+
}
48+
}
49+
}

MessagingService.BusinessLogic.Tests/Requests/RequestTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,22 @@ public void SendEmailRequest_CanBeCreated_IsCreated()
3131
request.Body.ShouldBe(TestData.Body);
3232
request.IsHtml.ShouldBe(TestData.IsHtmlTrue);
3333
}
34+
35+
[Fact]
36+
public void SendSMSRequest_CanBeCreated_IsCreated()
37+
{
38+
SendSMSRequest request = SendSMSRequest.Create(TestData.ConnectionIdentifier,
39+
TestData.MessageId,
40+
TestData.Sender,
41+
TestData.Destination,
42+
TestData.Message);
43+
44+
request.ShouldNotBeNull();
45+
request.ConnectionIdentifier.ShouldBe(TestData.ConnectionIdentifier);
46+
request.MessageId.ShouldBe(TestData.MessageId);
47+
request.Sender.ShouldBe(TestData.Sender);
48+
request.Destination.ShouldBe(TestData.Destination);
49+
request.Message.ShouldBe(TestData.Message);
50+
}
3451
}
3552
}

MessagingService.BusinessLogic.Tests/Services/EmailDomainServiceTests.cs

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)