UNPKG

vulcain-corejs

Version:
97 lines (95 loc) 2.69 kB
"use strict"; class MockManager { constructor(mocks) { this.mocks = this.toJsonLowercase(mocks); } toJsonLowercase(json) { if (!json) return null; let res = {}; for (let key of Object.keys(json)) { let val = json[key]; key = key.toLowerCase(); if (Array.isArray(val)) { res[key] = []; for (let item of val) { res[key].push(this.toJsonLowercase(item)); } } else if (typeof val === "object") { res[key] = this.toJsonLowercase(val); } else { res[key] = val; } } return res; } deepCompare(a, b) { if (!b) { return true; } if (!a) { return false; } for (let p of Object.keys(b)) { let val = b[p]; if (typeof val === "object") { if (!this.deepCompare(a[p], val)) { return false; } continue; } if (Array.isArray(val)) { let val2 = a[p]; if (val.length !== val2.length) { return false; } for (let i; i < val.length; i++) { if (!this.deepCompare(val2[i], val[i])) { return false; } } continue; } if (a[p] !== val) { return false; } } return true; } applyMockHttp(url, verb) { let mock = this.mocks.http[url]; mock = mock && mock[verb]; return (mock && mock.output) || undefined; } applyMockService(serviceName, serviceVersion, verb, data) { if (!serviceName) return; let mockService = this.mocks.services[serviceName.toLowerCase()]; mockService = (mockService && mockService[serviceVersion]) || mockService; if (!mockService) { return; } let mock = verb && mockService[verb.toLowerCase()]; if (!mock) { return; } if (!Array.isArray(mock)) { return mock; } for (let item of mock) { let input = item.input; if (!input) { continue; } let ok = true; if (this.deepCompare(data, input)) { return item.output; } } return; } } exports.MockManager = MockManager; //# sourceMappingURL=mockManager.js.map