hugo

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

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

import_jekyll_test.go (6001B)

    1 // Copyright 2015 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 commands
   15 
   16 import (
   17 	"encoding/json"
   18 	"testing"
   19 	"time"
   20 
   21 	qt "github.com/frankban/quicktest"
   22 )
   23 
   24 func TestParseJekyllFilename(t *testing.T) {
   25 	c := qt.New(t)
   26 	filenameArray := []string{
   27 		"2015-01-02-test.md",
   28 		"2012-03-15-中文.markup",
   29 	}
   30 
   31 	expectResult := []struct {
   32 		postDate time.Time
   33 		postName string
   34 	}{
   35 		{time.Date(2015, time.January, 2, 0, 0, 0, 0, time.UTC), "test"},
   36 		{time.Date(2012, time.March, 15, 0, 0, 0, 0, time.UTC), "中文"},
   37 	}
   38 
   39 	for i, filename := range filenameArray {
   40 		postDate, postName, err := parseJekyllFilename(filename)
   41 		c.Assert(err, qt.IsNil)
   42 		c.Assert(expectResult[i].postDate.Format("2006-01-02"), qt.Equals, postDate.Format("2006-01-02"))
   43 		c.Assert(expectResult[i].postName, qt.Equals, postName)
   44 	}
   45 }
   46 
   47 func TestConvertJekyllMetadata(t *testing.T) {
   48 	c := qt.New(t)
   49 	testDataList := []struct {
   50 		metadata any
   51 		postName string
   52 		postDate time.Time
   53 		draft    bool
   54 		expect   string
   55 	}{
   56 		{
   57 			map[any]any{},
   58 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   59 			`{"date":"2015-10-01T00:00:00Z"}`,
   60 		},
   61 		{
   62 			map[any]any{},
   63 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), true,
   64 			`{"date":"2015-10-01T00:00:00Z","draft":true}`,
   65 		},
   66 		{
   67 			map[any]any{"Permalink": "/permalink.html", "layout": "post"},
   68 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   69 			`{"date":"2015-10-01T00:00:00Z","url":"/permalink.html"}`,
   70 		},
   71 		{
   72 			map[any]any{"permalink": "/permalink.html"},
   73 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   74 			`{"date":"2015-10-01T00:00:00Z","url":"/permalink.html"}`,
   75 		},
   76 		{
   77 			map[any]any{"category": nil, "permalink": 123},
   78 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   79 			`{"date":"2015-10-01T00:00:00Z"}`,
   80 		},
   81 		{
   82 			map[any]any{"Excerpt_Separator": "sep"},
   83 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   84 			`{"date":"2015-10-01T00:00:00Z","excerpt_separator":"sep"}`,
   85 		},
   86 		{
   87 			map[any]any{"category": "book", "layout": "post", "Others": "Goods", "Date": "2015-10-01 12:13:11"},
   88 			"testPost", time.Date(2015, 10, 1, 0, 0, 0, 0, time.UTC), false,
   89 			`{"Others":"Goods","categories":["book"],"date":"2015-10-01T12:13:11Z"}`,
   90 		},
   91 	}
   92 
   93 	for _, data := range testDataList {
   94 		result, err := convertJekyllMetaData(data.metadata, data.postName, data.postDate, data.draft)
   95 		c.Assert(err, qt.IsNil)
   96 		jsonResult, err := json.Marshal(result)
   97 		c.Assert(err, qt.IsNil)
   98 		c.Assert(string(jsonResult), qt.Equals, data.expect)
   99 	}
  100 }
  101 
  102 func TestConvertJekyllContent(t *testing.T) {
  103 	c := qt.New(t)
  104 	testDataList := []struct {
  105 		metadata any
  106 		content  string
  107 		expect   string
  108 	}{
  109 		{
  110 			map[any]any{},
  111 			"Test content\r\n<!-- more -->\npart2 content", "Test content\n<!--more-->\npart2 content",
  112 		},
  113 		{
  114 			map[any]any{},
  115 			"Test content\n<!-- More -->\npart2 content", "Test content\n<!--more-->\npart2 content",
  116 		},
  117 		{
  118 			map[any]any{"excerpt_separator": "<!--sep-->"},
  119 			"Test content\n<!--sep-->\npart2 content",
  120 			"---\nexcerpt_separator: <!--sep-->\n---\nTest content\n<!--more-->\npart2 content",
  121 		},
  122 		{map[any]any{}, "{% raw %}text{% endraw %}", "text"},
  123 		{map[any]any{}, "{%raw%} text2 {%endraw %}", "text2"},
  124 		{
  125 			map[any]any{},
  126 			"{% highlight go %}\nvar s int\n{% endhighlight %}",
  127 			"{{< highlight go >}}\nvar s int\n{{< / highlight >}}",
  128 		},
  129 		{
  130 			map[any]any{},
  131 			"{% highlight go linenos hl_lines=\"1 2\" %}\nvar s string\nvar i int\n{% endhighlight %}",
  132 			"{{< highlight go \"linenos=table,hl_lines=1 2\" >}}\nvar s string\nvar i int\n{{< / highlight >}}",
  133 		},
  134 
  135 		// Octopress image tag
  136 		{
  137 			map[any]any{},
  138 			"{% img http://placekitten.com/890/280 %}",
  139 			"{{< figure src=\"http://placekitten.com/890/280\" >}}",
  140 		},
  141 		{
  142 			map[any]any{},
  143 			"{% img left http://placekitten.com/320/250 Place Kitten #2 %}",
  144 			"{{< figure class=\"left\" src=\"http://placekitten.com/320/250\" title=\"Place Kitten #2\" >}}",
  145 		},
  146 		{
  147 			map[any]any{},
  148 			"{% img right http://placekitten.com/300/500 150 250 'Place Kitten #3' %}",
  149 			"{{< figure class=\"right\" src=\"http://placekitten.com/300/500\" width=\"150\" height=\"250\" title=\"Place Kitten #3\" >}}",
  150 		},
  151 		{
  152 			map[any]any{},
  153 			"{% img right http://placekitten.com/300/500 150 250 'Place Kitten #4' 'An image of a very cute kitten' %}",
  154 			"{{< figure class=\"right\" src=\"http://placekitten.com/300/500\" width=\"150\" height=\"250\" title=\"Place Kitten #4\" alt=\"An image of a very cute kitten\" >}}",
  155 		},
  156 		{
  157 			map[any]any{},
  158 			"{% img http://placekitten.com/300/500 150 250 'Place Kitten #4' 'An image of a very cute kitten' %}",
  159 			"{{< figure src=\"http://placekitten.com/300/500\" width=\"150\" height=\"250\" title=\"Place Kitten #4\" alt=\"An image of a very cute kitten\" >}}",
  160 		},
  161 		{
  162 			map[any]any{},
  163 			"{% img right /placekitten/300/500 'Place Kitten #4' 'An image of a very cute kitten' %}",
  164 			"{{< figure class=\"right\" src=\"/placekitten/300/500\" title=\"Place Kitten #4\" alt=\"An image of a very cute kitten\" >}}",
  165 		},
  166 		{
  167 			map[any]any{"category": "book", "layout": "post", "Date": "2015-10-01 12:13:11"},
  168 			"somecontent",
  169 			"---\nDate: \"2015-10-01 12:13:11\"\ncategory: book\nlayout: post\n---\nsomecontent",
  170 		},
  171 	}
  172 	for _, data := range testDataList {
  173 		result, err := convertJekyllContent(data.metadata, data.content)
  174 		c.Assert(result, qt.Equals, data.expect)
  175 		c.Assert(err, qt.IsNil)
  176 	}
  177 }