public void WriteStandard_SyntaxHighlightsCodeUsingHighlightJSIfSyntaxHighlighterIsHighlightJS()
        {
            // Arrange
            const string dummyCode            = "dummyCode";
            const string dummyHighlightedCode = "dummyHighlightedCode";
            const string dummyLanguage        = "dummyLanguage";
            Mock <IHighlightJSService> mockHighlightJSService = _mockRepository.Create <IHighlightJSService>();

            mockHighlightJSService.Setup(p => p.HighlightAsync(dummyCode, dummyLanguage, "hljs-", default)).ReturnsAsync(dummyHighlightedCode);
            var                    dummyStringWriter   = new StringWriter();
            var                    dummyHtmlRenderer   = new HtmlRenderer(dummyStringWriter);
            FlexiCodeBlock         dummyFlexiCodeBlock = CreateFlexiCodeBlock(language: dummyLanguage, code: dummyCode, syntaxHighlighter: SyntaxHighlighter.HighlightJS);
            FlexiCodeBlockRenderer testSubject         = CreateFlexiCodeBlockRenderer(highlightJSService: mockHighlightJSService.Object);

            // Act
            testSubject.WriteStandard(dummyHtmlRenderer, dummyFlexiCodeBlock);
            string result = dummyStringWriter.ToString();

            // Assert
            _mockRepository.VerifyAll();
            Assert.Equal($@"<div class="" _no-title _no-copy-icon _has-header _language_dummyLanguage _has-syntax-highlights _no-line-numbers _no-omitted-lines-icon _no-highlighted-lines _no-highlighted-phrases"">
<header class=""__header"">
<button class=""__copy-button"" aria-label=""Copy code"">
</button>
</header>
<pre class=""__pre""><code class=""__code"">{dummyHighlightedCode}
</code></pre>
</div>
", result, ignoreLineEndingDifferences: true);
        }
        public void WriteStandard_RendersStandardCodeBlock(FlexiCodeBlock dummyFlexiCodeBlock,
                                                           string expectedResult)
        {
            // Arrange
            var dummyStringWriter = new StringWriter();
            var dummyHtmlRenderer = new HtmlRenderer(dummyStringWriter);
            FlexiCodeBlockRenderer testSubject = CreateFlexiCodeBlockRenderer();

            // Act
            testSubject.WriteStandard(dummyHtmlRenderer, dummyFlexiCodeBlock);
            string result = dummyStringWriter.ToString();

            // Assert
            Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
        }
        public void WriteClassic_RendersClassicCodeBlock(int dummyCodeNumLines, string dummyCode, string expectedResult)
        {
            // Arrange
            var                    dummyStringWriter   = new StringWriter();
            var                    dummyHtmlRenderer   = new HtmlRenderer(dummyStringWriter);
            FlexiCodeBlock         dummyFlexiCodeBlock = CreateFlexiCodeBlock(codeNumLines: dummyCodeNumLines, code: dummyCode);
            FlexiCodeBlockRenderer testSubject         = CreateFlexiCodeBlockRenderer();

            // Act
            testSubject.WriteClassic(dummyHtmlRenderer, dummyFlexiCodeBlock);
            string result = dummyStringWriter.ToString();

            // Assert
            Assert.Equal(expectedResult, result);
        }