Skip to content

Commit bcddb86

Browse files
Refactor message status handling in aggregates and tests
- Removed `InlineData` for certain `MessageStatus` values in `EmailAggregateTests.cs` and `SMSAggregateTests.cs` to narrow test cases. - Added checks in `EmailAggregate.cs` and `SMSAggregate.cs` to prevent setting the same `MessageStatus` multiple times, enhancing state management. - Minor formatting adjustment in `SMSAggregate.cs` for improved readability.
1 parent 355a383 commit bcddb86

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

MessagingService.EmailAggregate.Tests/EmailAggregateTests.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ public void EmailAggregate_MarkMessageAsDelivered_MessageMarkedAsDelivered() {
8585

8686
[Theory]
8787
[InlineData(MessageStatus.NotSet)]
88-
[InlineData(MessageStatus.Delivered)]
8988
[InlineData(MessageStatus.Rejected)]
9089
[InlineData(MessageStatus.Failed)]
9190
[InlineData(MessageStatus.Spam)]
@@ -139,7 +138,6 @@ public void EmailAggregate_MarkMessageAsRejected_MessageMarkedAsRejected() {
139138
[Theory]
140139
[InlineData(MessageStatus.NotSet)]
141140
[InlineData(MessageStatus.Delivered)]
142-
[InlineData(MessageStatus.Rejected)]
143141
[InlineData(MessageStatus.Failed)]
144142
[InlineData(MessageStatus.Spam)]
145143
[InlineData(MessageStatus.Bounced)]
@@ -192,7 +190,6 @@ public void EmailAggregate_MarkMessageAsFailed_MessageMarkedAsFailed() {
192190
[InlineData(MessageStatus.NotSet)]
193191
[InlineData(MessageStatus.Delivered)]
194192
[InlineData(MessageStatus.Rejected)]
195-
[InlineData(MessageStatus.Failed)]
196193
[InlineData(MessageStatus.Spam)]
197194
[InlineData(MessageStatus.Bounced)]
198195
public void EmailAggregate_MarkMessageAsFailed_IncorrectState_ErrorThrown(MessageStatus messageStatus) {
@@ -246,7 +243,6 @@ public void EmailAggregate_MarkMessageAsBounced_MessageMarkedAsBounced() {
246243
[InlineData(MessageStatus.Rejected)]
247244
[InlineData(MessageStatus.Failed)]
248245
[InlineData(MessageStatus.Spam)]
249-
[InlineData(MessageStatus.Bounced)]
250246
public void EmailAggregate_MarkMessageAsBounced_IncorrectState_ErrorThrown(MessageStatus messageStatus) {
251247
EmailAggregate emailAggregate = EmailAggregate.Create(TestData.MessageId);
252248

@@ -297,7 +293,6 @@ public void EmailAggregate_MarkMessageAsSpam_MessageMarkedAsSpam() {
297293
[InlineData(MessageStatus.Delivered)]
298294
[InlineData(MessageStatus.Rejected)]
299295
[InlineData(MessageStatus.Failed)]
300-
[InlineData(MessageStatus.Spam)]
301296
[InlineData(MessageStatus.Bounced)]
302297
public void EmailAggregate_MarkMessageAsSpam_IncorrectState_ErrorThrown(MessageStatus messageStatus) {
303298
EmailAggregate emailAggregate = EmailAggregate.Create(TestData.MessageId);

MessagingService.EmailMessageAggregate/EmailAggregate.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public static class EmailAggregateExtensions{
1515
public static void MarkMessageAsBounced(this EmailAggregate aggregate, String providerStatus,
1616
DateTime bouncedDateTime)
1717
{
18+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Bounced)
19+
return;
1820
aggregate.CheckMessageCanBeSetToBounced();
1921

2022
EmailMessageBouncedEvent messageBouncedEvent = new EmailMessageBouncedEvent(aggregate.AggregateId, providerStatus, bouncedDateTime);
@@ -25,6 +27,8 @@ public static void MarkMessageAsBounced(this EmailAggregate aggregate, String pr
2527
public static void MarkMessageAsDelivered(this EmailAggregate aggregate, String providerStatus,
2628
DateTime deliveredDateTime)
2729
{
30+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Delivered)
31+
return;
2832
aggregate.CheckMessageCanBeSetToDelivered();
2933

3034
EmailMessageDeliveredEvent messageDeliveredEvent = new EmailMessageDeliveredEvent(aggregate.AggregateId, providerStatus, deliveredDateTime);
@@ -35,6 +39,8 @@ public static void MarkMessageAsDelivered(this EmailAggregate aggregate, String
3539
public static void MarkMessageAsFailed(this EmailAggregate aggregate, String providerStatus,
3640
DateTime failedDateTime)
3741
{
42+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Failed)
43+
return;
3844
aggregate.CheckMessageCanBeSetToFailed();
3945

4046
EmailMessageFailedEvent messageFailedEvent = new EmailMessageFailedEvent(aggregate.AggregateId, providerStatus, failedDateTime);
@@ -45,6 +51,8 @@ public static void MarkMessageAsFailed(this EmailAggregate aggregate, String pro
4551
public static void MarkMessageAsRejected(this EmailAggregate aggregate, String providerStatus,
4652
DateTime rejectedDateTime)
4753
{
54+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Rejected)
55+
return;
4856
aggregate.CheckMessageCanBeSetToRejected();
4957

5058
EmailMessageRejectedEvent messageRejectedEvent = new EmailMessageRejectedEvent(aggregate.AggregateId, providerStatus, rejectedDateTime);
@@ -55,6 +63,8 @@ public static void MarkMessageAsRejected(this EmailAggregate aggregate, String p
5563
public static void MarkMessageAsSpam(this EmailAggregate aggregate, String providerStatus,
5664
DateTime spamDateTime)
5765
{
66+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Spam)
67+
return;
5868
aggregate.CheckMessageCanBeSetToSpam();
5969

6070
EmailMessageMarkedAsSpamEvent messageMarkedAsSpamEvent = new EmailMessageMarkedAsSpamEvent(aggregate.AggregateId, providerStatus, spamDateTime);

MessagingService.SMSAggregate.Tests/SMSAggregateTests.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ public void SMSAggregate_MarkMessageAsDelivered_MessageMarkedAsDelivered()
6262
[Theory]
6363
[InlineData(MessageStatus.NotSet)]
6464
[InlineData(MessageStatus.Expired)]
65-
[InlineData(MessageStatus.Delivered)]
6665
[InlineData(MessageStatus.Undeliverable)]
6766
[InlineData(MessageStatus.InProgress)]
6867
[InlineData(MessageStatus.Rejected)]
@@ -117,7 +116,6 @@ public void SMSAggregate_MarkMessageAsExpired_MessageMarkedAsExpired()
117116

118117
[Theory]
119118
[InlineData(MessageStatus.NotSet)]
120-
[InlineData(MessageStatus.Expired)]
121119
[InlineData(MessageStatus.Delivered)]
122120
[InlineData(MessageStatus.Undeliverable)]
123121
[InlineData(MessageStatus.InProgress)]
@@ -175,7 +173,6 @@ public void SMSAggregate_MarkMessageAsUndeliverable_MessageMarkedAsUndeliverable
175173
[InlineData(MessageStatus.NotSet)]
176174
[InlineData(MessageStatus.Expired)]
177175
[InlineData(MessageStatus.Delivered)]
178-
[InlineData(MessageStatus.Undeliverable)]
179176
[InlineData(MessageStatus.InProgress)]
180177
[InlineData(MessageStatus.Rejected)]
181178
public void SMSAggregate_MarkMessageAsUndeliverable_IncorrectState_ErrorThrown(MessageStatus messageStatus)
@@ -233,7 +230,6 @@ public void SMSAggregate_MarkMessageAsRejected_MessageMarkedAsRejected()
233230
[InlineData(MessageStatus.Delivered)]
234231
[InlineData(MessageStatus.Undeliverable)]
235232
[InlineData(MessageStatus.InProgress)]
236-
[InlineData(MessageStatus.Rejected)]
237233
public void SMSAggregate_MarkMessageAsRejected_IncorrectState_ErrorThrown(MessageStatus messageStatus)
238234
{
239235
SMSAggregate smsAggregate = SMSAggregate.Create(TestData.MessageId);

MessagingService.SMSMessageAggregate/SMSAggregate.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public static MessageStatus GetDeliveryStatus(this SMSAggregate aggregate, Int32
2121
public static void MarkMessageAsDelivered(this SMSAggregate aggregate,
2222
String providerStatus,
2323
DateTime failedDateTime){
24+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Delivered)
25+
return;
26+
2427
aggregate.CheckMessageCanBeSetToDelivered();
2528

2629
SMSMessageDeliveredEvent messageDeliveredEvent = new SMSMessageDeliveredEvent(aggregate.AggregateId, providerStatus, failedDateTime);
@@ -31,6 +34,8 @@ public static void MarkMessageAsDelivered(this SMSAggregate aggregate,
3134
public static void MarkMessageAsExpired(this SMSAggregate aggregate,
3235
String providerStatus,
3336
DateTime failedDateTime){
37+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Expired)
38+
return;
3439
aggregate.CheckMessageCanBeSetToExpired();
3540

3641
SMSMessageExpiredEvent messageExpiredEvent = new SMSMessageExpiredEvent(aggregate.AggregateId, providerStatus, failedDateTime);
@@ -41,6 +46,8 @@ public static void MarkMessageAsExpired(this SMSAggregate aggregate,
4146
public static void MarkMessageAsRejected(this SMSAggregate aggregate,
4247
String providerStatus,
4348
DateTime failedDateTime){
49+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Rejected)
50+
return;
4451
aggregate.CheckMessageCanBeSetToRejected();
4552

4653
SMSMessageRejectedEvent messageRejectedEvent = new SMSMessageRejectedEvent(aggregate.AggregateId, providerStatus, failedDateTime);
@@ -51,6 +58,8 @@ public static void MarkMessageAsRejected(this SMSAggregate aggregate,
5158
public static void MarkMessageAsUndeliverable(this SMSAggregate aggregate,
5259
String providerStatus,
5360
DateTime failedDateTime){
61+
if (aggregate.DeliveryStatusList[aggregate.ResendCount] == MessageStatus.Undeliverable)
62+
return;
5463
aggregate.CheckMessageCanBeSetToUndeliverable();
5564

5665
SMSMessageUndeliveredEvent messageUndeliveredEvent = new SMSMessageUndeliveredEvent(aggregate.AggregateId, providerStatus, failedDateTime);
@@ -120,7 +129,7 @@ public static void SendRequestToProvider(this SMSAggregate aggregate,
120129
aggregate.ApplyAndAppend(requestSentToProviderEvent);
121130
}
122131

123-
private static void CheckMessageCanBeSetToDelivered(this SMSAggregate aggregate){
132+
private static void CheckMessageCanBeSetToDelivered(this SMSAggregate aggregate) {
124133
if (aggregate.DeliveryStatusList[aggregate.ResendCount] != MessageStatus.Sent){
125134
throw new InvalidOperationException($"Message at status {aggregate.DeliveryStatusList[aggregate.ResendCount]} cannot be set to delivered");
126135
}

0 commit comments

Comments
 (0)