UNPKG

json-schema-mock

Version:

data mocker for json-schema.

85 lines (74 loc) 2.71 kB
/** * format 数据模拟,只支持 json-schema-format 中定义的format,以保持一致性 */ var Format = require( 'json-schema-format' ); var MockJS = require( 'mockjs' ); var MockRandom = MockJS.Random; var CDN_PICS = require( '../MOCK_DATA/cdn_pics.json' ); var FormatMocker = function( format, schema, wholeSchema ){ var formats = Format.getAllFormats(); var result = undefined; formats.forEach(function( f ){ if( f === format ){ switch( format ){ case 'date-time': { result = MockRandom.datetime('yyyy-MM-ddTHH:mm:ss') + '.' + MockRandom.integer( 10, 100 ) + 'Z'; break; } case 'email': { result = MockRandom.email(); break; } case 'hostname': { result = MockRandom.domain(); break; } case 'ipv4': { result = MockRandom.ip(); break; } case 'ipv6': { break; } case 'uri': { result = MockRandom.url(); break; } case 'DATE_TIME': { result = MockRandom.datetime(); break; } case 'TIMESTAMP': { result = Date.now() + MockRandom.integer( -864000000, +864000000); break; } case 'URL': { result = MockRandom.url(); break; } case 'TMALL_DETAIL': { result = 'http://detail.tmall.com/item.htm?id=' + MockRandom.integer( 10000000000, 99999999999 ); break; } case 'TAOBAO_DETAIL': { result = 'http://item.taobao.com/item.htm?id=' + MockRandom.integer( 10000000000, 99999999999 ); break; } case 'TMALL_SHOP': { result = 'http://' + MockRandom.string( 'lower', 4, 10 ) + '.tmall.com'; break; } case 'TAOBAO_SHOP': { result = 'http://' + MockRandom.string( 'lower', 4, 10 ) + '.taobao.com'; break; } case 'CDN_PIC': { result = CDN_PICS[ MockRandom.integer( 0, CDN_PICS.length -1 ) ]; break; } } } }); return result; }; module.exports = FormatMocker;