public void ReturnFalse_WhenElementIsNull()
        {
            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(null);

            // Assert
            Assert.IsFalse(actualResult);
        }
        public void ReturnFalse_WhenIFrameHasNotSourceAttribute()
        {
            // Arrange
            var htmlElement = ElementFactory.CreateIFrame();

            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(htmlElement);

            // Assert
            Assert.IsFalse(actualResult);
        }
        public void ReturnFalse_WhenHtmlElementIsNotIFrame()
        {
            // Arrange
            var htmlElement = ElementFactory.CreateAnchor();

            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(htmlElement);

            // Assert
            Assert.IsFalse(actualResult);
        }
        public void ReturnAmpYouTubeElementWithAttributeDataVideoId()
        {
            // Arrange
            var iframe = this.CreateIFrame();

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(VideoId, actualResult.GetAttribute("data-videoid"));
        }
        public void ReturnAmpYouTubeElementWithAttributeLayoutEqualToFill_WhenWidthAndHeightAreNotSpecified()
        {
            // Arrange
            const string ExpectedResult = "fill";
            var          iframe         = this.CreateIFrame();

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("layout"));
        }
        public void ReturnAmpYouTubeElement()
        {
            // Arrange
            const string ExpectedResult = "AMP-YOUTUBE";
            var          iframe         = this.CreateIFrame();

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.TagName);
        }
        public void ReplaceIFrameWithAmpYouTubeElement()
        {
            // Arrange
            var iframe       = this.CreateIFrame();
            var iframeParent = iframe.Parent;
            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(1, iframeParent.ChildNodes.Length);
            Assert.AreEqual("AMP-YOUTUBE", actualResult.TagName);
        }
        public void ReturnTrue_WhenSourceAttributeIsYouTubeDomainAndStartsWithWWW()
        {
            // Arrange
            var htmlElement = ElementFactory.CreateIFrame();

            htmlElement.Source = "http://www.youtube.com/embed/d8fr3AdK_tQ4";

            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(htmlElement);

            // Assert
            Assert.IsTrue(actualResult);
        }
        public void ReturnFalse_WhenSourceAttributeIsNotEmbedUrlPath()
        {
            // Arrange
            var htmlElement = ElementFactory.CreateIFrame();

            htmlElement.Source = "http://youtube.com/not-valid/url-path";

            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(htmlElement);

            // Assert
            Assert.IsFalse(actualResult);
        }
        public void ReturnFalse_WhenSourceAttributeIsNotYouTubeDomain()
        {
            // Arrange
            var htmlElement = ElementFactory.CreateIFrame();

            htmlElement.Source = "mydomain.com";

            // Act
            var actualResult = new YouTubeVideoSanitizer().CanSanitize(htmlElement);

            // Assert
            Assert.IsFalse(actualResult);
        }
        public void ReturnAmpYouTubeElementWithAttributeLayoutEqualToFixedHeight_WhenOnlyHeighIsSpecified()
        {
            // Arrange
            const string ExpectedResult = "fixed-height";
            var          iframe         = this.CreateIFrame();

            iframe.DisplayHeight = 100;

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("layout"));
        }
        public void ReturnAmpYouTubeElementWithAttributeId()
        {
            // Arrange
            const string ExpectedResult = "ytbPlayer";
            var          iframe         = this.CreateIFrame();

            iframe.Id = "ytbPlayer";

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("id"));
        }
        public void ReturnAmpYouTubeElementWithAttributeHeight()
        {
            // Arrange
            const string ExpectedResult = "50";
            var          iframe         = this.CreateIFrame();

            iframe.DisplayHeight = 50;

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("height"));
        }
        public void ReturnAmpYouTubeElementWithAttributeLayoutEqualToResponsive_WhenBothWidthAndHeightAreSpecified()
        {
            // Arrange
            const string ExpectedResult = "responsive";
            var          iframe         = this.CreateIFrame();

            iframe.DisplayHeight = 100;
            iframe.DisplayWidth  = 100;

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("layout"));
        }
        public void ReturnAmpYouTubeElementWithAttributeLayoutEqualToNoDisplay_WhenTheIframeHasStyleVisibilityHidden()
        {
            // Arrange
            const string ExpectedResult = "nodisplay";
            var          iframe         = this.CreateIFrame();

            iframe.DisplayHeight = 100;
            iframe.SetAttribute("style", "visibility:hidden");

            // Act
            var actualResult = new YouTubeVideoSanitizer().Sanitize(ElementFactory.Document, iframe);

            // Assert
            Assert.AreEqual(ExpectedResult, actualResult.GetAttribute("layout"));
        }