public void CardTests_AdaptiveCard_CardToAttachment()
        {
            AdaptiveCards.AdaptiveCard card = new AdaptiveCards.AdaptiveCard();
            card.Body.Add(new AdaptiveCards.AdaptiveTextBlock("some text on card"));

            var action = new AdaptiveCards.AdaptiveOpenUrlAction();

            action.Url = new Uri("https://microsoft.com");
            card.Actions.Add(action);

            Attachment attachment = card.ToAttachment();

            Assert.IsNotNull(attachment);
            Assert.IsNotNull(attachment.Content);
            Assert.IsNotNull(attachment.ContentType);
            Assert.AreEqual(attachment.ContentType, AdaptiveCards.AdaptiveCard.ContentType);
            Assert.IsTrue(JObject.DeepEquals(JObject.FromObject(card), JObject.FromObject(attachment.Content)));
        }
        public void CardTests_AdaptiveCard_JsonToAttachment()
        {
            AdaptiveCards.AdaptiveCardParseResult card = AdaptiveCards.AdaptiveCard.FromJson(File.ReadAllText(@"Jsons\SampleAdaptiveCard.json"));
            Attachment attachment = card.ToAttachment();

            AdaptiveCards.AdaptiveCard expectedCard = new AdaptiveCards.AdaptiveCard();
            expectedCard.Body.Add(new AdaptiveCards.AdaptiveTextBlock("some text on card"));

            var action = new AdaptiveCards.AdaptiveOpenUrlAction();

            action.Url = new Uri("https://microsoft.com");
            expectedCard.Actions.Add(action);

            Assert.IsNotNull(attachment);
            Assert.IsNotNull(attachment.Content);
            Assert.IsNotNull(attachment.ContentType);
            Assert.AreEqual(attachment.ContentType, AdaptiveCards.AdaptiveCard.ContentType);
            Assert.IsTrue(JObject.DeepEquals(JObject.FromObject(expectedCard), JObject.FromObject(attachment.Content)));
        }
        public void TaskModuleTests_AdaptiveCard()
        {
            AdaptiveCards.AdaptiveCard currentAdaptiveCard = new AdaptiveCards.AdaptiveCard();
            currentAdaptiveCard.Body.Add(new AdaptiveCards.AdaptiveTextBlock("some text on card"));

            var action = new AdaptiveCards.AdaptiveOpenUrlAction();

            action.Url = new Uri("https://microsoft.com");
            currentAdaptiveCard.Actions.Add(action);

            TaskModuleResponseEnvelope currentTaskModuleEnvelope = new TaskModuleResponseEnvelope
            {
                Task = new TaskModuleContinueResponse
                {
                    Value = new TaskModuleTaskInfo()
                    {
                        Title  = "Adaptive Card: Inputs",
                        Card   = currentAdaptiveCard.ToAttachment(),
                        Height = "small",
                        Width  = "small",
                    },
                    Type = "continue",
                }
            };

            var inputJson = File.ReadAllText(@"Jsons\SampleTaskModuleAdaptiveCardPayload.json");
            var expectedTaskModuleEnvelope = JObject.Parse(inputJson);

            Assert.IsTrue(expectedTaskModuleEnvelope != null);
            Assert.IsTrue(expectedTaskModuleEnvelope["task"] != null);
            Assert.IsTrue(expectedTaskModuleEnvelope["task"]["type"].ToString() == currentTaskModuleEnvelope.Task.Type);

            var expected = JsonConvert.DeserializeObject <TaskModuleTaskInfo>(expectedTaskModuleEnvelope["task"]["value"].ToString());
            var current  = (currentTaskModuleEnvelope.Task as TaskModuleContinueResponse).Value as TaskModuleTaskInfo;

            Assert.AreEqual(expected.Width, current.Width);
            Assert.AreEqual(expected.Title, current.Title);
            Assert.AreEqual(expected.Card.ContentType, current.Card.ContentType);
        }