11'use strict' ;
22
33var toJsonSchema = require ( '../index.js' ) ;
4+ var path = require ( 'path' ) ;
45
56describe ( 'jsdoc-to-json-schema' , function ( ) {
67
78 it ( 'should be defined' , function ( ) {
89 expect ( toJsonSchema ) . toBeDefined ( ) ;
910 } ) ;
11+
12+ it ( 'should return JSON Schema for JS singleton' , function ( done ) {
13+
14+ var inputFile = path . resolve ( './test/data/test-singleton.js' ) ;
15+
16+ // generate a JSON schema for product.js
17+ toJsonSchema ( inputFile ) . then ( function ( schema ) {
18+
19+ expect ( schema ) . toBeDefined ( ) ;
20+
21+ // top level
22+ expect ( schema . name ) . toEqual ( 'product' ) ;
23+ expect ( schema . description ) . toEqual ( 'An e-commerce product' ) ;
24+ expect ( schema . properties ) . toBeDefined ( ) ;
25+
26+ // .name property
27+ expect ( schema . properties . name ) . toBeDefined ( ) ;
28+ expect ( schema . properties . name . type ) . toEqual ( 'string' ) ;
29+ expect ( schema . properties . name . title ) . toEqual ( 'Name' ) ;
30+ expect ( schema . properties . name . description ) . toEqual ( 'The SEO friendly name of the product' ) ;
31+ expect ( schema . properties . name . minLength ) . toEqual ( 3 ) ;
32+ expect ( schema . properties . name . maxLength ) . toEqual ( 255 ) ;
33+ expect ( schema . properties . name . required ) . toEqual ( true ) ;
34+
35+ // .url property
36+ expect ( schema . properties . url ) . toBeDefined ( ) ;
37+ expect ( schema . properties . url . type ) . toEqual ( 'string' ) ;
38+ expect ( schema . properties . url . title ) . toEqual ( 'Url' ) ;
39+ expect ( schema . properties . url . description ) . toEqual ( 'Unique, SEO friendly product Url' ) ;
40+ expect ( schema . properties . url . minLength ) . toEqual ( 1 ) ;
41+ expect ( schema . properties . url . maxLength ) . toEqual ( 255 ) ;
42+ expect ( schema . properties . url . required ) . toEqual ( true ) ;
43+
44+ // .price property
45+ expect ( schema . properties . price ) . toBeDefined ( ) ;
46+ expect ( schema . properties . price . type ) . toEqual ( 'number' ) ;
47+ expect ( schema . properties . price . title ) . toEqual ( 'Price' ) ;
48+ expect ( schema . properties . price . description ) . toEqual ( 'Price of the product' ) ;
49+ expect ( schema . properties . price . minimum ) . toEqual ( 0 ) ;
50+ expect ( schema . properties . price . required ) . toEqual ( true ) ;
51+
52+ done ( ) ;
53+ } )
54+ . catch ( function ( err ) {
55+ done ( err ) ;
56+ } ) ;
57+ } ) ;
58+
1059} ) ;
0 commit comments