bee/parser/parser_test.go

103 lines
1.4 KiB
Go
Raw Normal View History

2021-05-22 14:14:59 +00:00
package beeParser
import (
"fmt"
"log"
"testing"
2021-05-23 14:04:23 +00:00
"github.com/stretchr/testify/assert"
)
2021-05-23 14:04:23 +00:00
func ExampleStructParser() {
2021-05-22 14:14:59 +00:00
const src = `
package p
import (
"net/http"
)
2021-05-22 14:14:59 +00:00
type StructB struct {
Field1 string
}
type StructA struct {
Field1 string
Field2 struct{
a string
b string
}
2021-05-22 14:14:59 +00:00
Field3 []string
Field4 map[string]string
Field5 http.SameSite
Field6 func(int)
Field7 StructB
2021-05-22 14:14:59 +00:00
}
`
annotator := &Annotator{}
2021-05-23 14:04:23 +00:00
sp, err := NewStructParser("src.go", src, "StructA", annotator)
2021-05-22 14:14:59 +00:00
if err != nil {
log.Fatal(err)
}
2021-05-23 14:19:48 +00:00
b, err := sp.ToJSON()
2021-05-22 14:14:59 +00:00
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
// Output:
// {
// "Field1": "",
// "Field2": {
// "a": "",
// "b": ""
// },
// "Field3": "",
// "Field4": "",
// "Field5": "",
// "Field6": "",
// "Field7": {
// "Field1": ""
// }
2021-05-22 14:14:59 +00:00
// }
}
func TestParseStructByFieldAnnotation(t *testing.T) {
const src = `
package p
type StructA struct {
//@Name Field1
//@DefaultValues bee test
// beego test
Field1 string
}
`
expect := `[
{
"Name": [
"Field1"
]
},
{
"DefaultValues": [
"bee test",
"beego test"
]
}
]`
annotator := &Annotator{}
sp, err := NewStructParser("src.go", src, "StructA", annotator)
if err != nil {
log.Fatal(err)
}
actual := sp.FieldFormatter.Format(sp.MainStruct.Fields[0])
assert.Equal(t, expect, actual)
}