예제 #1
0
        public void Only_attachments_with_valid_json_should_be_extracted()
        {
            var validJson         = JsonConvert.SerializeObject(new ReceiptCard(title: "valid"));
            var invalidJson       = validJson + "some extra text";
            var validAttachment   = new Attachment(ValidContentType, content: validJson);
            var invalidAttachment = new Attachment(ValidContentType, content: invalidJson);
            var activity          = new Activity(attachments: new[] { validAttachment, invalidAttachment });

            var sut = new DefaultAttachmentExtractor();

            var returnedCards = sut.ExtractCards <ReceiptCard>(activity).ToList();

            returnedCards.Count.Should().Be(1);
        }
예제 #2
0
        public void Attachments_with_content_should_be_deserialized_without_being_retrieved()
        {
            var receiptCard     = new ReceiptCard("some title");
            var receiptCardJson = JsonConvert.SerializeObject(receiptCard);
            var attachment      = new Attachment(ValidContentType, contentUrl: null, content: receiptCardJson);
            var activity        = new Activity(attachments: new[] { attachment });

            var sut = new DefaultAttachmentExtractor();

            sut.ExtractCards <ReceiptCard>(activity).ToList();

            _retriever.DidNotReceive().GetAttachmentFromUrl(Arg.Any <string>());
            _retriever.DidNotReceiveWithAnyArgs().GetAttachmentsFromUrls(Arg.Any <string[]>());
        }
예제 #3
0
        public void Attachments_with_content_url_should_be_retrieved_by_url()
        {
            const string contentUrl      = "URL";
            var          receiptCard     = new ReceiptCard("some title");
            var          receiptCardJson = JsonConvert.SerializeObject(receiptCard);

            _retriever.GetAttachmentsFromUrls(Arg.Any <string[]>()).Returns(new[] { receiptCardJson });
            var attachment = new Attachment(ValidContentType, contentUrl: contentUrl, content: null);
            var activity   = new Activity(attachments: new[] { attachment });

            var sut = new DefaultAttachmentExtractor();

            sut.ExtractCards <ReceiptCard>(activity).ToList();

            _retriever.Received().GetAttachmentsFromUrls(Arg.Is <string[]>(x => x.Contains(contentUrl)));
        }
예제 #4
0
        public void All_attachments_with_correct_content_type_will_be_extracted_regardless_of_type()
        {
            var heroCard       = new HeroCard(text: "some text");
            var heroJson       = JsonConvert.SerializeObject(heroCard);
            var heroAttachment = new Attachment(ValidContentType, content: heroJson);

            var someOtherType           = new { SomeField = "some text" };
            var someOtherTypeJson       = JsonConvert.SerializeObject(someOtherType);
            var someOtherTypeAttachment = new Attachment(ValidContentType, content: someOtherTypeJson);

            var attachments = new List <Attachment> {
                heroAttachment, someOtherTypeAttachment
            };
            var activity = new Activity(attachments: attachments);

            var sut = new DefaultAttachmentExtractor();

            var returnedCards = sut.ExtractCards <HeroCard>(activity).ToList();

            returnedCards.Count.Should().Be(2);
            returnedCards.Should().Contain(card => card.Text == null);
        }
예제 #5
0
        public void All_attachments_with_correct_content_type_will_be_extracted_regardless_of_type()
        {
            var receiptCard       = new ReceiptCard(title: "some text");
            var receiptJson       = JsonConvert.SerializeObject(receiptCard);
            var receiptAttachment = new Attachment(ValidContentType, "validUrl1");

            var someOtherType           = new { SomeField = "some text" };
            var someOtherTypeJson       = JsonConvert.SerializeObject(someOtherType);
            var someOtherTypeAttachment = new Attachment(ValidContentType, "validUrl2");

            var attachments = new List <Attachment> {
                receiptAttachment, someOtherTypeAttachment
            };
            var activity = new Activity(attachments: attachments);

            _retriever.GetAttachmentsFromUrls(Arg.Any <string[]>()).Returns(new[] { receiptJson, someOtherTypeJson });

            var sut = new DefaultAttachmentExtractor();

            var returnedCards = sut.ExtractCards <ReceiptCard>(activity).ToList();

            returnedCards.Count.Should().Be(2);
            returnedCards.Should().Contain(card => card.Title == null);
        }