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);
        }
Example #2
0
        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());
        }