106 lines · 2.1 KB · Go
RawDownload
// Copyright 2022 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package structs import (	"testing" 	"github.com/stretchr/testify/assert"	"github.com/stretchr/testify/require"	"go.yaml.in/yaml/v3") func TestIssueTemplate_Type(t *testing.T) {	tests := []struct {		fileName string		want     IssueTemplateType	}{		{			fileName: ".gitea/ISSUE_TEMPLATE/bug_report.yaml",			want:     IssueTemplateTypeYaml,		},		{			fileName: ".gitea/ISSUE_TEMPLATE/bug_report.md",			want:     IssueTemplateTypeMarkdown,		},		{			fileName: ".gitea/ISSUE_TEMPLATE/bug_report.txt",			want:     "",		},		{			fileName: ".gitea/ISSUE_TEMPLATE/config.yaml",			want:     "",		},	}	for _, tt := range tests {		t.Run(tt.fileName, func(t *testing.T) {			it := IssueTemplate{				FileName: tt.fileName,			}			assert.Equal(t, tt.want, it.Type())		})	}} func TestIssueTemplateLabels_UnmarshalYAML(t *testing.T) {	tests := []struct {		name    string		content string		tmpl    *IssueTemplate		want    *IssueTemplate		wantErr string	}{		{			name:    "array",			content: `labels: ["a", "b", "c"]`,			tmpl: &IssueTemplate{				Labels: []string{"should_be_overwrote"},			},			want: &IssueTemplate{				Labels: []string{"a", "b", "c"},			},		},		{			name:    "string",			content: `labels: "a,b,c"`,			tmpl: &IssueTemplate{				Labels: []string{"should_be_overwrote"},			},			want: &IssueTemplate{				Labels: []string{"a", "b", "c"},			},		},		{			name:    "empty",			content: `labels:`,			tmpl: &IssueTemplate{				Labels: []string{"should_be_overwrote"},			},			want: &IssueTemplate{				Labels: nil,			},		},		{			name: "error",			content: `labels:  a: aa  b: bb`,			tmpl:    &IssueTemplate{},			wantErr: "line 3: cannot unmarshal !!map into IssueTemplateLabels",		},	}	for _, tt := range tests {		t.Run(tt.name, func(t *testing.T) {			err := yaml.Unmarshal([]byte(tt.content), tt.tmpl)			if tt.wantErr != "" {				assert.EqualError(t, err, tt.wantErr)			} else {				require.NoError(t, err)				assert.Equal(t, tt.want, tt.tmpl)			}		})	}}