UNPKG

pactum

Version:

REST API Testing Tool for all levels in a Test Pyramid

110 lines (92 loc) 2.23 kB
const { loadDataManagement } = require('../helpers/file.utils'); const config = require('../config'); const jq = require('json-query'); let dataMap = {}; let dataTemplate = {}; let dataStore = {}; const stash = { loadData(path = './data') { const { templates, maps } = loadDataManagement(path); for (const template of templates) { this.addDataTemplate(template); } for (const map of maps) { this.addDataMap(map); } }, addDataMap(key, value) { if (value) { Object.assign(dataMap, { [key]: value }); } else { if (!Array.isArray(key)) { key = [key]; } key.forEach(map => Object.assign(dataMap, map)); } config.data.ref.map.processed = false; }, getDataMap(path) { if (path) { return jq(path, { data: dataMap }).value; } return dataMap; }, clearDataMaps() { dataMap = {}; config.data.ref.map.processed = false; config.data.ref.map.enabled = false; }, addDataTemplate(key, value) { if (value) { Object.assign(dataTemplate, { [key]: value }); } else { if (!Array.isArray(key)) { key = [key]; } key.forEach(template => Object.assign(dataTemplate, template)); } config.data.template.processed = false; }, getDataTemplate(path) { if (path) { return jq(path, { data: dataTemplate }).value; } return dataTemplate; }, clearDataTemplates() { dataTemplate = {}; config.data.template.processed = false; config.data.template.enabled = false; }, addDataStore(key, value) { if (value) { Object.assign(dataStore, { [key]: value }); } else { Object.assign(dataStore, key); } config.data.ref.spec.enabled = true; }, getDataStore(path) { if (path) { return jq(path, { data: dataStore }).value; } return dataStore; }, clearDataStores() { dataStore = {}; config.data.ref.spec.enabled = false; }, getStoreKey(key) { return `$S{${key}}`; }, getMapKey(key) { return `$M{${key}}`; }, getFunctionKey(key) { return `$F{${key}}`; }, setDirectOverride(value) { config.data.template.direct_override = value; } }; module.exports = stash;