github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/gen/golang/gen_test.go (about)

     1  package golang
     2  
     3  import (
     4  	"log"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/webrpc/webrpc/gen"
     9  	"github.com/webrpc/webrpc/schema"
    10  )
    11  
    12  const input = `
    13  {
    14    "webrpc": "v1",
    15    "name": "example",
    16    "version":" v0.0.1",
    17    "messages": [
    18      {
    19        "name": "Kind",
    20        "type": "enum",
    21        "fields": [
    22          {
    23            "name": "USER",
    24            "type": "uint32",
    25            "value": "1"
    26          },
    27          {
    28            "name": "ADMIN",
    29            "type": "uint32",
    30            "value": "2"
    31          }
    32        ]
    33      },
    34      {
    35        "name": "Empty",
    36        "type": "struct",
    37        "fields": [
    38        ]
    39      },
    40      {
    41        "name": "GetUserRequest",
    42        "type": "struct",
    43        "fields": [
    44          {
    45            "name": "userID",
    46            "type": "uint64",
    47            "optional": false
    48          }
    49        ]
    50      },
    51      {
    52        "name": "User",
    53        "type": "struct",
    54        "fields": [
    55          {
    56            "name": "ID",
    57            "type": "uint64",
    58            "optional": false,
    59            "meta": [
    60              { "json": "id" },
    61              { "go.tag.db": "id" }
    62            ]
    63          },
    64          {
    65            "name": "username",
    66            "type": "string",
    67            "optional": false,
    68            "meta": [
    69              { "json": "USERNAME" },
    70              { "go.tag.db": "username" }
    71            ]
    72          },
    73          {
    74            "name": "createdAt",
    75            "type": "timestamp",
    76            "optional": true,
    77            "meta": [
    78              { "go.tag.json": "createdAt,omitempty" },
    79              { "go.tag.db": "created_at" }
    80            ]
    81          }
    82  
    83        ]
    84      },
    85      {
    86        "name": "RandomStuff",
    87        "type": "struct",
    88        "fields": [
    89          {
    90            "name": "meta",
    91            "type": "map<string,any>"
    92          },
    93          {
    94            "name": "metaNestedExample",
    95            "type": "map<string,map<string,uint32>>"
    96          },
    97          {
    98            "name": "namesList",
    99            "type": "[]string"
   100          },
   101          {
   102            "name": "numsList",
   103            "type": "[]int64"
   104          },
   105          {
   106            "name": "doubleArray",
   107            "type": "[][]string"
   108          },
   109          {
   110            "name": "listOfMaps",
   111            "type": "[]map<string,uint32>"
   112          },
   113          {
   114            "name": "listOfUsers",
   115            "type": "[]User"
   116          },
   117          {
   118            "name": "mapOfUsers",
   119            "type": "map<string,User>"
   120          },
   121          {
   122            "name": "user",
   123            "type": "User"
   124          }
   125        ]
   126      }
   127    ],
   128    "services": [
   129      {
   130        "name": "ExampleService",
   131        "methods": [
   132          {
   133            "name": "Ping",
   134            "inputs": [],
   135            "outputs": [
   136              {
   137                "name": "status",
   138                "type": "bool"
   139              }
   140            ]
   141          },
   142          {
   143            "name": "GetUser",
   144            "name": "GetUser",
   145            "inputs": [
   146              {
   147                "name": "header",
   148                "type": "map<string,string>"
   149              },
   150              {
   151                "name": "req",
   152                "type": "GetUserRequest"
   153              }
   154            ],
   155            "outputs": [
   156              {
   157                "name": "code",
   158                "type": "uint32"
   159              },
   160              {
   161                "name": "user",
   162                "type": "User"
   163              }
   164            ]
   165          }
   166        ]
   167      }
   168    ]
   169  }
   170  `
   171  
   172  func TestGenTypescript(t *testing.T) {
   173  	g := &generator{}
   174  
   175  	s, err := schema.ParseSchemaJSON([]byte(input))
   176  	assert.NoError(t, err)
   177  
   178  	o, err := g.Gen(s, gen.TargetOptions{PkgName: "test", Client: true, Server: true})
   179  	assert.NoError(t, err)
   180  	_ = o
   181  
   182  	log.Printf("o: %v", o)
   183  }