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

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