74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package lang
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestGenerateGoDataClassUsesSnakeCaseJSONTags(t *testing.T) {
|
|
prog, err := Parse(`
|
|
package demo
|
|
|
|
data class KeycloakToken(var accessToken: String, var refreshToken: String)
|
|
`)
|
|
if err != nil {
|
|
t.Fatalf("parse failed: %v", err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatalf("generation failed: %v", err)
|
|
}
|
|
for _, want := range []string{"AccessToken", "`json:\"access_token\"`", "RefreshToken", "`json:\"refresh_token\"`"} {
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("generated Go missing %q:\n%s", want, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateGoDataClassJSONNamingOverride(t *testing.T) {
|
|
prog, err := Parse(`
|
|
package demo
|
|
|
|
@jsonNaming(camelCase)
|
|
data class Account(var availableBalance: Double, var Type: String)
|
|
`)
|
|
if err != nil {
|
|
t.Fatalf("parse failed: %v", err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatalf("generation failed: %v", err)
|
|
}
|
|
for _, want := range []string{"`json:\"availableBalance\"`", "`json:\"type\"`"} {
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("generated Go missing camelCase tag %q:\n%s", want, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateGoDataClassFieldVisibilityAndSelector(t *testing.T) {
|
|
prog, err := Parse(`
|
|
package demo
|
|
|
|
import json encoding.json
|
|
|
|
data class Request(var email: String, private val traceId: String)
|
|
|
|
fun email(body: ByteSlice): String {
|
|
val request = json.decode<Request>(body).unwrap()
|
|
return request.email
|
|
}
|
|
`)
|
|
if err != nil {
|
|
t.Fatalf("parse failed: %v", err)
|
|
}
|
|
out, err := GenerateGo(prog)
|
|
if err != nil {
|
|
t.Fatalf("generation failed: %v", err)
|
|
}
|
|
for _, want := range []string{"Email", "`json:\"email\"`", "traceId string `json:\"-\"`", "return request.Email"} {
|
|
if !strings.Contains(string(out), want) {
|
|
t.Fatalf("generated Go missing %q:\n%s", want, out)
|
|
}
|
|
}
|
|
}
|