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 }