| const Mock = require('mockjs') |
| const { param2Obj } = require('./utils') |
| |
| const user = require('./user') |
| const role = require('./role') |
| const article = require('./article') |
| const search = require('./remote-search') |
| |
| const mocks = [ |
| ...user, |
| ...role, |
| ...article, |
| ...search |
| ] |
| |
| // for front mock |
| // please use it cautiously, it will redefine XMLHttpRequest, |
| // which will cause many of your third-party libraries to be invalidated(like progress event). |
| function mockXHR() { |
| // mock patch |
| // https://github.com/nuysoft/Mock/issues/300 |
| Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send |
| Mock.XHR.prototype.send = function() { |
| if (this.custom.xhr) { |
| this.custom.xhr.withCredentials = this.withCredentials || false |
| |
| if (this.responseType) { |
| this.custom.xhr.responseType = this.responseType |
| } |
| } |
| this.proxy_send(...arguments) |
| } |
| |
| function XHR2ExpressReqWrap(respond) { |
| return function(options) { |
| let result = null |
| if (respond instanceof Function) { |
| const { body, type, url } = options |
| // https://expressjs.com/en/4x/api.html#req |
| result = respond({ |
| method: type, |
| body: JSON.parse(body), |
| query: param2Obj(url) |
| }) |
| } else { |
| result = respond |
| } |
| return Mock.mock(result) |
| } |
| } |
| |
| for (const i of mocks) { |
| Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response)) |
| } |
| } |
| |
| module.exports = { |
| mocks, |
| mockXHR |
| } |