// GoToSocial // Copyright (C) GoToSocial Authors admin@gotosocial.org // SPDX-License-Identifier: AGPL-3.0-or-later // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. package router import ( "html/template" "testing" ) func TestOutdentPre(t *testing.T) { const html = template.HTML(` <div class="text"> <div class="content" lang="en"> <p>Here's a bunch of HTML, read it and weep, weep then!</p> <pre><code class="language-html"><section class="about-user"> <div class="col-header"> <h2>About</h2> </div> <div class="fields"> <h3 class="sr-only">Fields</h3> <dl> <div class="field"> <dt>should you follow me?</dt> <dd>maybe!</dd> </div> <div class="field"> <dt>age</dt> <dd>120</dd> </div> </dl> </div> <div class="bio"> <h3 class="sr-only">Bio</h3> <p>i post about things that concern me</p> </div> <div class="sr-only" role="group"> <h3 class="sr-only">Stats</h3> <span>Joined in Jun, 2022.</span> <span>8 posts.</span> <span>Followed by 1.</span> <span>Following 1.</span> </div> <div class="accountstats" aria-hidden="true"> <b>Joined</b><time datetime="2022-06-04T13:12:00.000Z">Jun, 2022</time> <b>Posts</b><span>8</span> <b>Followed by</b><span>1</span> <b>Following</b><span>1</span> </div> </section> </code></pre> <p>There, hope you liked that!</p> </div> </div> <div class="text"> <div class="content" lang="en"> <p>Here's a bunch of HTML, read it and weep, weep then!</p> <pre><code class="language-html"><section class="about-user"> <div class="col-header"> <h2>About</h2> </div> <div class="fields"> <h3 class="sr-only">Fields</h3> <dl> <div class="field"> <dt>should you follow me?</dt> <dd>maybe!</dd> </div> <div class="field"> <dt>age</dt> <dd>120</dd> </div> </dl> </div> <div class="bio"> <h3 class="sr-only">Bio</h3> <p>i post about things that concern me</p> </div> <div class="sr-only" role="group"> <h3 class="sr-only">Stats</h3> <span>Joined in Jun, 2022.</span> <span>8 posts.</span> <span>Followed by 1.</span> <span>Following 1.</span> </div> <div class="accountstats" aria-hidden="true"> <b>Joined</b><time datetime="2022-06-04T13:12:00.000Z">Jun, 2022</time> <b>Posts</b><span>8</span> <b>Followed by</b><span>1</span> <b>Following</b><span>1</span> </div> </section> </code></pre> <p>There, hope you liked that!</p> </div> </div> `) const expected = template.HTML(` <div class="text"> <div class="content" lang="en"> <p>Here's a bunch of HTML, read it and weep, weep then!</p> <pre><code class="language-html"><section class="about-user"> <div class="col-header"> <h2>About</h2> </div> <div class="fields"> <h3 class="sr-only">Fields</h3> <dl> <div class="field"> <dt>should you follow me?</dt> <dd>maybe!</dd> </div> <div class="field"> <dt>age</dt> <dd>120</dd> </div> </dl> </div> <div class="bio"> <h3 class="sr-only">Bio</h3> <p>i post about things that concern me</p> </div> <div class="sr-only" role="group"> <h3 class="sr-only">Stats</h3> <span>Joined in Jun, 2022.</span> <span>8 posts.</span> <span>Followed by 1.</span> <span>Following 1.</span> </div> <div class="accountstats" aria-hidden="true"> <b>Joined</b><time datetime="2022-06-04T13:12:00.000Z">Jun, 2022</time> <b>Posts</b><span>8</span> <b>Followed by</b><span>1</span> <b>Following</b><span>1</span> </div> </section> </code></pre> <p>There, hope you liked that!</p> </div> </div> <div class="text"> <div class="content" lang="en"> <p>Here's a bunch of HTML, read it and weep, weep then!</p> <pre><code class="language-html"><section class="about-user"> <div class="col-header"> <h2>About</h2> </div> <div class="fields"> <h3 class="sr-only">Fields</h3> <dl> <div class="field"> <dt>should you follow me?</dt> <dd>maybe!</dd> </div> <div class="field"> <dt>age</dt> <dd>120</dd> </div> </dl> </div> <div class="bio"> <h3 class="sr-only">Bio</h3> <p>i post about things that concern me</p> </div> <div class="sr-only" role="group"> <h3 class="sr-only">Stats</h3> <span>Joined in Jun, 2022.</span> <span>8 posts.</span> <span>Followed by 1.</span> <span>Following 1.</span> </div> <div class="accountstats" aria-hidden="true"> <b>Joined</b><time datetime="2022-06-04T13:12:00.000Z">Jun, 2022</time> <b>Posts</b><span>8</span> <b>Followed by</b><span>1</span> <b>Following</b><span>1</span> </div> </section> </code></pre> <p>There, hope you liked that!</p> </div> </div> `) out := outdentPre(html) if out != expected { t.Fatalf("unexpected output:\n`%s`\n", out) } }