github.com/anakojm/hugo-katex@v0.0.0-20231023141351-42d6f5de9c0b/output/config_test.go (about) 1 // Copyright 2023 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 output 15 16 import ( 17 "testing" 18 19 qt "github.com/frankban/quicktest" 20 "github.com/gohugoio/hugo/media" 21 ) 22 23 func TestDecodeConfig(t *testing.T) { 24 c := qt.New(t) 25 26 mediaTypes := media.Types{media.Builtin.JSONType, media.Builtin.XMLType} 27 28 tests := []struct { 29 name string 30 m map[string]any 31 shouldError bool 32 assert func(t *testing.T, name string, f Formats) 33 }{ 34 { 35 "Redefine JSON", 36 map[string]any{ 37 "json": map[string]any{ 38 "baseName": "myindex", 39 "isPlainText": "false", 40 }, 41 }, 42 false, 43 func(t *testing.T, name string, f Formats) { 44 msg := qt.Commentf(name) 45 c.Assert(len(f), qt.Equals, len(DefaultFormats), msg) 46 json, _ := f.GetByName("JSON") 47 c.Assert(json.BaseName, qt.Equals, "myindex") 48 c.Assert(json.MediaType, qt.Equals, media.Builtin.JSONType) 49 c.Assert(json.IsPlainText, qt.Equals, false) 50 }, 51 }, 52 { 53 "Add XML format with string as mediatype", 54 map[string]any{ 55 "MYXMLFORMAT": map[string]any{ 56 "baseName": "myxml", 57 "mediaType": "application/xml", 58 }, 59 }, 60 false, 61 func(t *testing.T, name string, f Formats) { 62 c.Assert(len(f), qt.Equals, len(DefaultFormats)+1) 63 xml, found := f.GetByName("MYXMLFORMAT") 64 c.Assert(found, qt.Equals, true) 65 c.Assert(xml.BaseName, qt.Equals, "myxml") 66 c.Assert(xml.MediaType, qt.Equals, media.Builtin.XMLType) 67 68 // Verify that we haven't changed the DefaultFormats slice. 69 json, _ := f.GetByName("JSON") 70 c.Assert(json.BaseName, qt.Equals, "index") 71 }, 72 }, 73 { 74 "Add format unknown mediatype", 75 map[string]any{ 76 "MYINVALID": map[string]any{ 77 "baseName": "mymy", 78 "mediaType": "application/hugo", 79 }, 80 }, 81 true, 82 func(t *testing.T, name string, f Formats) { 83 }, 84 }, 85 } 86 87 for _, test := range tests { 88 result, err := DecodeConfig(mediaTypes, test.m) 89 msg := qt.Commentf(test.name) 90 91 if test.shouldError { 92 c.Assert(err, qt.Not(qt.IsNil), msg) 93 } else { 94 c.Assert(err, qt.IsNil, msg) 95 test.assert(t, test.name, result.Config) 96 } 97 } 98 }