static SendMessageResult GetSmsOptions(MessageTemplate messageTemplate, MessageInfo message, string smsTag, IEnumerable <string> mobiles, bool asynchronously, out SendSmsOptions sendSmsOptions) { sendSmsOptions = null; if (messageTemplate == null) { throw new ArgumentNullException(nameof(MessageTemplate)); } if (message == null) { throw new ArgumentNullException(nameof(MessageInfo)); } if (string.IsNullOrWhiteSpace(messageTemplate.Content)) { throw new Exception("The message template content is null or empty"); } if (mobiles.IsNullOrEmpty()) { throw new Exception("The mobiles is null or empty"); } var parameterDict = message.Parameters?.ObjectToStringDcitionary(); Dictionary <string, string> templateParameters = GetTemplateParameters(parameterDict); //content var contentResolveResult = ResolveTemplate(messageTemplate.Content, templateParameters); if (!contentResolveResult.Item1 || string.IsNullOrWhiteSpace(contentResolveResult.Item3)) { if (!string.IsNullOrWhiteSpace(contentResolveResult.Item2)) { return(SendMessageResult.NoParameter($"Not set '{contentResolveResult.Item2}' value in the sms body template")); } return(SendMessageResult.MessageIsNullOrEmpty($"The sms body is null or empty")); } //Send sms sendSmsOptions = new SendSmsOptions() { Tag = smsTag, Content = contentResolveResult.Item3, Parameters = parameterDict, Asynchronously = asynchronously, Mobiles = mobiles, }; sendSmsOptions.AddWorkId(message.WorkId); sendSmsOptions.AddTemplateMessageId(message.Id); return(SendMessageResult.SendSuccess()); }
public void SendSmsOverload_PassesToGeneratedOne(PhoneNumber expectedFrom, PhoneNumber expectedTo, string expectedMessage, SendSmsOptions expectedOptions) { Mock <SmsClient> mockClient = new Mock <SmsClient>() { CallBase = true }; Response <SendSmsResponse>?expectedResponse = default; CancellationToken cancellationToken = new CancellationTokenSource().Token; var callExpression = BuildExpression(x => x.Send(It.IsAny <PhoneNumber>(), It.IsAny <IEnumerable <PhoneNumber> >(), It.IsAny <string>(), It.IsAny <SendSmsOptions>(), It.IsAny <CancellationToken>())); mockClient .Setup(callExpression) .Returns((PhoneNumber from, IEnumerable <PhoneNumber> to, string message, SendSmsOptions options, CancellationToken token) => { Assert.AreEqual(expectedFrom, from); Assert.AreEqual(expectedTo, to.Single()); Assert.AreEqual(expectedMessage, message); Assert.AreEqual(cancellationToken, token); Assert.AreEqual(expectedOptions, options); return(expectedResponse = new Mock <Response <SendSmsResponse> >().Object); }); Response <SendSmsResponse> actualResponse = mockClient.Object.Send(expectedFrom, expectedTo, expectedMessage, expectedOptions, cancellationToken); mockClient.Verify(callExpression, Times.Once()); Assert.AreEqual(expectedResponse, actualResponse); }