hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

tableofcontents_test.go (3856B)

    1 // Copyright 2019 The Hugo Authors. All rights reserved.
    2 //
    3 // Licensed under the Apache License, Version 2.0 (the "License");
    4 // you may not use this file except in compliance with the License.
    5 // You may obtain a copy of the License at
    6 // http://www.apache.org/licenses/LICENSE-2.0
    7 //
    8 // Unless required by applicable law or agreed to in writing, software
    9 // distributed under the License is distributed on an "AS IS" BASIS,
   10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   11 // See the License for the specific language governing permissions and
   12 // limitations under the License.
   13 
   14 package tableofcontents
   15 
   16 import (
   17 	"testing"
   18 
   19 	qt "github.com/frankban/quicktest"
   20 )
   21 
   22 func TestToc(t *testing.T) {
   23 	c := qt.New(t)
   24 
   25 	toc := &Root{}
   26 
   27 	toc.AddAt(Heading{Text: "Heading 1", ID: "h1-1"}, 0, 0)
   28 	toc.AddAt(Heading{Text: "1-H2-1", ID: "1-h2-1"}, 0, 1)
   29 	toc.AddAt(Heading{Text: "1-H2-2", ID: "1-h2-2"}, 0, 1)
   30 	toc.AddAt(Heading{Text: "1-H3-1", ID: "1-h2-2"}, 0, 2)
   31 	toc.AddAt(Heading{Text: "Heading 2", ID: "h1-2"}, 1, 0)
   32 
   33 	got := toc.ToHTML(1, -1, false)
   34 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   35   <ul>
   36     <li><a href="#h1-1">Heading 1</a>
   37       <ul>
   38         <li><a href="#1-h2-1">1-H2-1</a></li>
   39         <li><a href="#1-h2-2">1-H2-2</a>
   40           <ul>
   41             <li><a href="#1-h2-2">1-H3-1</a></li>
   42           </ul>
   43         </li>
   44       </ul>
   45     </li>
   46     <li><a href="#h1-2">Heading 2</a></li>
   47   </ul>
   48 </nav>`, qt.Commentf(got))
   49 
   50 	got = toc.ToHTML(1, 1, false)
   51 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   52   <ul>
   53     <li><a href="#h1-1">Heading 1</a></li>
   54     <li><a href="#h1-2">Heading 2</a></li>
   55   </ul>
   56 </nav>`, qt.Commentf(got))
   57 
   58 	got = toc.ToHTML(1, 2, false)
   59 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   60   <ul>
   61     <li><a href="#h1-1">Heading 1</a>
   62       <ul>
   63         <li><a href="#1-h2-1">1-H2-1</a></li>
   64         <li><a href="#1-h2-2">1-H2-2</a></li>
   65       </ul>
   66     </li>
   67     <li><a href="#h1-2">Heading 2</a></li>
   68   </ul>
   69 </nav>`, qt.Commentf(got))
   70 
   71 	got = toc.ToHTML(2, 2, false)
   72 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   73   <ul>
   74     <li><a href="#1-h2-1">1-H2-1</a></li>
   75     <li><a href="#1-h2-2">1-H2-2</a></li>
   76   </ul>
   77 </nav>`, qt.Commentf(got))
   78 
   79 	got = toc.ToHTML(1, -1, true)
   80 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   81   <ol>
   82     <li><a href="#h1-1">Heading 1</a>
   83       <ol>
   84         <li><a href="#1-h2-1">1-H2-1</a></li>
   85         <li><a href="#1-h2-2">1-H2-2</a>
   86           <ol>
   87             <li><a href="#1-h2-2">1-H3-1</a></li>
   88           </ol>
   89         </li>
   90       </ol>
   91     </li>
   92     <li><a href="#h1-2">Heading 2</a></li>
   93   </ol>
   94 </nav>`, qt.Commentf(got))
   95 }
   96 
   97 func TestTocMissingParent(t *testing.T) {
   98 	c := qt.New(t)
   99 
  100 	toc := &Root{}
  101 
  102 	toc.AddAt(Heading{Text: "H2", ID: "h2"}, 0, 1)
  103 	toc.AddAt(Heading{Text: "H3", ID: "h3"}, 1, 2)
  104 	toc.AddAt(Heading{Text: "H3", ID: "h3"}, 1, 2)
  105 
  106 	got := toc.ToHTML(1, -1, false)
  107 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
  108   <ul>
  109     <li>
  110       <ul>
  111         <li><a href="#h2">H2</a></li>
  112       </ul>
  113     </li>
  114     <li>
  115       <ul>
  116         <li>
  117           <ul>
  118             <li><a href="#h3">H3</a></li>
  119             <li><a href="#h3">H3</a></li>
  120           </ul>
  121         </li>
  122       </ul>
  123     </li>
  124   </ul>
  125 </nav>`, qt.Commentf(got))
  126 
  127 	got = toc.ToHTML(3, 3, false)
  128 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
  129   <ul>
  130     <li><a href="#h3">H3</a></li>
  131     <li><a href="#h3">H3</a></li>
  132   </ul>
  133 </nav>`, qt.Commentf(got))
  134 
  135 	got = toc.ToHTML(1, -1, true)
  136 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
  137   <ol>
  138     <li>
  139       <ol>
  140         <li><a href="#h2">H2</a></li>
  141       </ol>
  142     </li>
  143     <li>
  144       <ol>
  145         <li>
  146           <ol>
  147             <li><a href="#h3">H3</a></li>
  148             <li><a href="#h3">H3</a></li>
  149           </ol>
  150         </li>
  151       </ol>
  152     </li>
  153   </ol>
  154 </nav>`, qt.Commentf(got))
  155 }