mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 10:02:26 -05:00 
			
		
		
		
	
		
			
	
	
		
			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) | ||
|  | 	} | ||
|  | } |