Files
atomctl/pkg/swag/spec_test.go
2024-12-23 15:58:17 +08:00

189 lines
4.4 KiB
Go

package swag
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSpec_InstanceName(t *testing.T) {
type fields struct {
Version string
Host string
BasePath string
Schemes []string
Title string
Description string
InfoInstanceName string
SwaggerTemplate string
}
tests := []struct {
name string
fields fields
want string
}{
{
name: "TestInstanceNameCorrect",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName1",
},
want: "TestInstanceName1",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
doc := Spec{
Version: tt.fields.Version,
Host: tt.fields.Host,
BasePath: tt.fields.BasePath,
Schemes: tt.fields.Schemes,
Title: tt.fields.Title,
Description: tt.fields.Description,
InfoInstanceName: tt.fields.InfoInstanceName,
SwaggerTemplate: tt.fields.SwaggerTemplate,
}
assert.Equal(t, tt.want, doc.InstanceName())
})
}
}
func TestSpec_ReadDoc(t *testing.T) {
type fields struct {
Version string
Host string
BasePath string
Schemes []string
Title string
Description string
InfoInstanceName string
SwaggerTemplate string
LeftDelim string
RightDelim string
}
tests := []struct {
name string
fields fields
want string
}{
{
name: "TestReadDocCorrect",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName",
SwaggerTemplate: `{
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
}`,
},
want: "{" +
"\n\t\t\t\"swagger\": \"2.0\"," +
"\n\t\t\t\"info\": {" +
"\n\t\t\t\t\"description\": \"\",\n\t\t\t\t\"" +
"title\": \"\"," +
"\n\t\t\t\t\"version\": \"1.0\"" +
"\n\t\t\t}," +
"\n\t\t\t\"host\": \"localhost:8080\"," +
"\n\t\t\t\"basePath\": \"/\"," +
"\n\t\t}",
},
{
name: "TestReadDocMarshalTrigger",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName",
SwaggerTemplate: "{{ marshal .Version }}",
},
want: "\"1.0\"",
},
{
name: "TestReadDocParseError",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName",
SwaggerTemplate: "{{ ..Version }}",
},
want: "{{ ..Version }}",
},
{
name: "TestReadDocExecuteError",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName",
SwaggerTemplate: "{{ .Schemesa }}",
},
want: "{{ .Schemesa }}",
},
{
name: "TestReadDocCustomDelims",
fields: fields{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
InfoInstanceName: "TestInstanceName",
SwaggerTemplate: `{
"swagger": "2.0",
"info": {
"description": "{%escape .Description%}",
"title": "{%.Title%}",
"version": "{%.Version%}"
},
"host": "{%.Host%}",
"basePath": "{%.BasePath%}",
}`,
LeftDelim: "{%",
RightDelim: "%}",
},
want: "{" +
"\n\t\t\t\"swagger\": \"2.0\"," +
"\n\t\t\t\"info\": {" +
"\n\t\t\t\t\"description\": \"\",\n\t\t\t\t\"" +
"title\": \"\"," +
"\n\t\t\t\t\"version\": \"1.0\"" +
"\n\t\t\t}," +
"\n\t\t\t\"host\": \"localhost:8080\"," +
"\n\t\t\t\"basePath\": \"/\"," +
"\n\t\t}",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
doc := Spec{
Version: tt.fields.Version,
Host: tt.fields.Host,
BasePath: tt.fields.BasePath,
Schemes: tt.fields.Schemes,
Title: tt.fields.Title,
Description: tt.fields.Description,
InfoInstanceName: tt.fields.InfoInstanceName,
SwaggerTemplate: tt.fields.SwaggerTemplate,
LeftDelim: tt.fields.LeftDelim,
RightDelim: tt.fields.RightDelim,
}
assert.Equal(t, tt.want, doc.ReadDoc())
})
}
}