internal static ButtonsTemplate Convert(IButtonsTemplate template) { if (template.Text == null) { throw new InvalidOperationException("The text cannot be null."); } if (!(template is ButtonsTemplate buttonsTemplate)) { buttonsTemplate = new ButtonsTemplate() { ThumbnailUrl = template.ThumbnailUrl, Title = template.Title, Text = template.Text, }; } if (template.Actions == null) { throw new InvalidOperationException("The actions cannot be null."); } buttonsTemplate.Actions = TemplateAction.Convert(template.Actions); return(buttonsTemplate); }
public static ButtonsTemplate ToButtonsTemplate(this IButtonsTemplate self) { if (self.Text == null) { throw new InvalidOperationException("The text cannot be null."); } ButtonsTemplate buttonsTemplate = self as ButtonsTemplate; if (buttonsTemplate == null) { buttonsTemplate = new ButtonsTemplate() { ThumbnailUrl = self.ThumbnailUrl, Title = self.Title, Text = self.Text, }; } if (self.Actions == null) { throw new InvalidOperationException("The actions cannot be null."); } buttonsTemplate.Actions = self.Actions.ToTemplateAction().ToArray(); return(buttonsTemplate); }
public void Convert_TemplateMessageWithButtonsTemplate_InstanceIsPreserved() { TemplateMessage message = new TemplateMessage() { AlternativeText = "Alternative", Template = new ButtonsTemplate() { ThumbnailUrl = new Uri("https://foo.bar"), Title = "ButtonsTitle", Text = "ButtonsText", Actions = new ITemplateAction[] { new PostbackAction() { Label = "PostbackLabel", Text = "PostbackText", Data = "PostbackData", } } } }; ISendMessage[] messages = MessageConverter.Convert(new ISendMessage[] { message }); Assert.AreEqual(1, messages.Length); ITemplateMessage templateMessage = messages[0] as ITemplateMessage; Assert.AreEqual(message, templateMessage); IButtonsTemplate buttonsTemplate = templateMessage.Template as IButtonsTemplate; Assert.AreEqual(message.Template, buttonsTemplate); ITemplateAction action = buttonsTemplate.Actions.First(); Assert.AreEqual(action, ((ButtonsTemplate)message.Template).Actions.First()); }