205 lines
9.2 KiB
Go
205 lines
9.2 KiB
Go
|
// 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)
|
||
|
}
|
||
|
}
|