Reorganized namespaces
All checks were successful
Branch Build / build-test-deploy (push) Successful in 1m19s
All checks were successful
Branch Build / build-test-deploy (push) Successful in 1m19s
This commit is contained in:
91
test/LinkMobility.Tests/Webhook/Text/TextNotificationTest.cs
Normal file
91
test/LinkMobility.Tests/Webhook/Text/TextNotificationTest.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
using AMWD.Net.Api.LinkMobility.Text;
|
||||
using AMWD.Net.Api.LinkMobility.Webhook.Text;
|
||||
|
||||
namespace LinkMobility.Tests.Webhook.Text
|
||||
{
|
||||
[TestClass]
|
||||
public class TextNotificationTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void ShouldParseAllPropertiesForTextNotification()
|
||||
{
|
||||
// Arrange
|
||||
string json = @"{
|
||||
""messageType"": ""text"",
|
||||
""notificationId"": ""notif-123"",
|
||||
""transferId"": ""trans-456"",
|
||||
""messageFlashSms"": true,
|
||||
""senderAddress"": ""436991234567"",
|
||||
""senderAddressType"": ""international"",
|
||||
""recipientAddress"": ""066012345678"",
|
||||
""recipientAddressType"": ""national"",
|
||||
""textMessageContent"": ""Hello from user"",
|
||||
""userDataHeaderPresent"": false,
|
||||
""binaryMessageContent"": [""SGVsbG8=""],
|
||||
""deliveryReportMessageStatus"": 2,
|
||||
""sentOn"": ""2025-12-03T12:34:56Z"",
|
||||
""deliveredOn"": ""2025-12-03T12:35:30Z"",
|
||||
""deliveredAs"": 1,
|
||||
""clientMessageId"": ""client-789""
|
||||
}";
|
||||
|
||||
// Act
|
||||
bool successful = TextNotification.TryParse(json, out var notification);
|
||||
|
||||
// Assert
|
||||
Assert.IsTrue(successful, "TryParse should return true for valid json");
|
||||
Assert.IsNotNull(notification);
|
||||
|
||||
Assert.AreEqual(TextMessageType.Text, notification.MessageType);
|
||||
Assert.AreEqual("notif-123", notification.NotificationId);
|
||||
Assert.AreEqual("trans-456", notification.TransferId);
|
||||
|
||||
Assert.IsTrue(notification.MessageFlashSms.HasValue && notification.MessageFlashSms.Value);
|
||||
Assert.AreEqual("436991234567", notification.SenderAddress);
|
||||
Assert.IsTrue(notification.SenderAddressType.HasValue);
|
||||
Assert.AreEqual(AddressType.International, notification.SenderAddressType.Value);
|
||||
|
||||
Assert.AreEqual("066012345678", notification.RecipientAddress);
|
||||
Assert.IsTrue(notification.RecipientAddressType.HasValue);
|
||||
Assert.AreEqual(AddressType.National, notification.RecipientAddressType.Value);
|
||||
|
||||
Assert.AreEqual("Hello from user", notification.TextMessageContent);
|
||||
Assert.IsTrue(notification.UserDataHeaderPresent.HasValue && !notification.UserDataHeaderPresent.Value);
|
||||
|
||||
Assert.IsNotNull(notification.BinaryMessageContent);
|
||||
CollectionAssert.AreEqual(new List<string> { "SGVsbG8=" }, new List<string>(notification.BinaryMessageContent));
|
||||
|
||||
// delivery status and deliveredAs are numeric in the test json: assert underlying integral values
|
||||
Assert.IsTrue(notification.DeliveryReportMessageStatus.HasValue);
|
||||
Assert.AreEqual(2, (int)notification.DeliveryReportMessageStatus.Value);
|
||||
|
||||
Assert.IsTrue(notification.SentOn.HasValue);
|
||||
Assert.IsTrue(notification.DeliveredOn.HasValue);
|
||||
|
||||
// Compare instants in UTC
|
||||
var expectedSent = DateTime.Parse("2025-12-03T12:34:56Z").ToUniversalTime();
|
||||
var expectedDelivered = DateTime.Parse("2025-12-03T12:35:30Z").ToUniversalTime();
|
||||
Assert.AreEqual(expectedSent, notification.SentOn.Value.ToUniversalTime());
|
||||
Assert.AreEqual(expectedDelivered, notification.DeliveredOn.Value.ToUniversalTime());
|
||||
|
||||
Assert.IsTrue(notification.DeliveredAs.HasValue);
|
||||
Assert.AreEqual(1, (int)notification.DeliveredAs.Value);
|
||||
|
||||
Assert.AreEqual("client-789", notification.ClientMessageId);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TryParseShouldReturnFalseOnInvalidJson()
|
||||
{
|
||||
// Arrange
|
||||
string invalid = "this is not json";
|
||||
|
||||
// Act
|
||||
bool successful = TextNotification.TryParse(invalid, out var notification);
|
||||
|
||||
// Assert
|
||||
Assert.IsFalse(successful);
|
||||
Assert.IsNull(notification);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user