public void RenderMetaTags_RenderedTagTitle_Rendered()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = TwitterCardAnswerKey.DescriptionValue,
                SiteUsername = TwitterCardAnswerKey.SiteUsernameValue,
                Image        = null
            };

            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(context, output);
            Assert.Contains("name=\"twitter:title\" content=\"" + TwitterCardAnswerKey.TitleValue + "\"", output.Content.GetContent());
        }
        public void RenderMetaTags_NoValueForImageHeightOrWidth_Rendered()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = TwitterCardAnswerKey.DescriptionValue,
                SiteUsername = TwitterCardAnswerKey.SiteUsernameValue,
                Image        = new TwitterImage(TwitterCardAnswerKey.ImageUrlValue)
            };

            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(context, output);
            Assert.DoesNotContain("twitter:image:height", output.Content.GetContent());
            Assert.DoesNotContain("twitter:image:width", output.Content.GetContent());
        }
        public void RenderMetaTags_NoValueForImage_Rendered()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = TwitterCardAnswerKey.DescriptionValue,
                SiteUsername = TwitterCardAnswerKey.SiteUsernameValue,
                Image        = null,
            };

            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture));

            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(context, output);
            Assert.DoesNotContain("twitter:image", output.Content.GetContent(), StringComparison.Ordinal);
        }
        public void RenderMetaTags_NoValueForDescription_ExceptionThrown()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = string.Empty,
                SiteUsername = TwitterCardAnswerKey.SiteIdValue,
                Image        = null,
            };
            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture));
            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var validationException = Assert.Throws <ValidationException>(() => tagHelper.Process(context, output));

            Assert.Contains(
                nameof(TwitterCardSummaryLargeImage.Description),
                validationException.Message,
                StringComparison.Ordinal);
        }
        public void RenderMetaTags_NoValueForTwitterSiteUsername_ExceptionThrown()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = TwitterCardAnswerKey.DescriptionValue,
                SiteUsername = string.Empty,
                Image        = null
            };
            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));
            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var validationException = Assert.Throws <ValidationException>(() => tagHelper.Process(context, output));

            Assert.Contains("either twitter:site or twitter:site:id is required.", validationException.Message);
        }
        public void RenderMetaTags_NoValueForDescription_ExceptionThrown()
        {
            var       expected        = typeof(System.ArgumentNullException);
            Exception thrownException = null;

            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = string.Empty,
                SiteUsername = TwitterCardAnswerKey.SiteIdValue,
                Image        = null
            };

            try
            {
                var context = new TagHelperContext(
                    new TagHelperAttributeList(),
                    new Dictionary <object, object>(),
                    Guid.NewGuid().ToString("N"));

                var output = new TagHelperOutput(
                    "meta",
                    new TagHelperAttributeList(),
                    (cache, encoder) =>
                {
                    var tagHelperContent = new DefaultTagHelperContent();
                    tagHelperContent.SetContent(string.Empty);
                    return(Task.FromResult <TagHelperContent>(tagHelperContent));
                });

                tagHelper.Process(context, output);
            }
            catch (Exception e)
            {
                thrownException = e;
            }

            Assert.Equal(expected, thrownException.GetType());
            Assert.Equal("Description", ((ArgumentException)thrownException).ParamName.ToString());
        }
        public void RenderMetaTags_RenderedTagImageWithImageUrlHeightAndWidth_Rendered()
        {
            var tagHelper = new TwitterCardSummaryLargeImage()
            {
                Title        = TwitterCardAnswerKey.TitleValue,
                Description  = TwitterCardAnswerKey.DescriptionValue,
                SiteUsername = TwitterCardAnswerKey.SiteUsernameValue,
                Image        = new TwitterImage(TwitterCardAnswerKey.ImageUrlValue, TwitterCardAnswerKey.ImageWidthValue, TwitterCardAnswerKey.ImageHeightValue),
            };

            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture));

            var output = new TagHelperOutput(
                "meta",
                new TagHelperAttributeList(),
                (cache, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(context, output);
            Assert.Contains(
                "name=\"twitter:image\" content=\"" + TwitterCardAnswerKey.ImageUrlValue + "\"",
                output.Content.GetContent(),
                StringComparison.Ordinal);
            Assert.Contains(
                "name=\"twitter:image:height\" content=\"" + TwitterCardAnswerKey.ImageHeightValue.ToString(CultureInfo.InvariantCulture) + "\"",
                output.Content.GetContent(),
                StringComparison.Ordinal);
            Assert.Contains(
                "name=\"twitter:image:width\" content=\"" + TwitterCardAnswerKey.ImageWidthValue.ToString(CultureInfo.InvariantCulture) + "\"",
                output.Content.GetContent(),
                StringComparison.Ordinal);
        }