frontmatter_test.go (1862B)
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 parser 15 16 import ( 17 "bytes" 18 "reflect" 19 "testing" 20 21 "github.com/gohugoio/hugo/parser/metadecoders" 22 ) 23 24 func TestInterfaceToConfig(t *testing.T) { 25 cases := []struct { 26 input any 27 format metadecoders.Format 28 want []byte 29 isErr bool 30 }{ 31 // TOML 32 {map[string]any{}, metadecoders.TOML, nil, false}, 33 { 34 map[string]any{"title": "test' 1"}, 35 metadecoders.TOML, 36 []byte("title = \"test' 1\"\n"), 37 false, 38 }, 39 40 // YAML 41 {map[string]any{}, metadecoders.YAML, []byte("{}\n"), false}, 42 { 43 map[string]any{"title": "test 1"}, 44 metadecoders.YAML, 45 []byte("title: test 1\n"), 46 false, 47 }, 48 49 // JSON 50 {map[string]any{}, metadecoders.JSON, []byte("{}\n"), false}, 51 { 52 map[string]any{"title": "test 1"}, 53 metadecoders.JSON, 54 []byte("{\n \"title\": \"test 1\"\n}\n"), 55 false, 56 }, 57 58 // Errors 59 {nil, metadecoders.TOML, nil, true}, 60 {map[string]any{}, "foo", nil, true}, 61 } 62 63 for i, c := range cases { 64 var buf bytes.Buffer 65 66 err := InterfaceToConfig(c.input, c.format, &buf) 67 if err != nil { 68 if c.isErr { 69 continue 70 } 71 t.Fatalf("[%d] unexpected error value: %v", i, err) 72 } 73 74 if !reflect.DeepEqual(buf.Bytes(), c.want) { 75 t.Errorf("[%d] not equal:\nwant %q,\n got %q", i, c.want, buf.Bytes()) 76 } 77 } 78 }