joyent-portal/packages/portal-api/test/_mocks/data.js

74 lines
1.6 KiB
JavaScript

'use strict';
const FindIndex = require('lodash.findindex');
module.exports = ({ deploymentGroups = [], services = [], instances = [] }) => {
const getInstances = (serviceId) => {
return (opts, cb) => {
cb(null, instances
.filter((instance) => {
return instance.serviceId === serviceId;
})
);
};
};
const getServices = (deploymentGroupId) => {
return (opts, cb) => {
cb(null, services
.filter((service) => {
return service.deploymentGroupId === deploymentGroupId;
})
.map((service) => {
return Object.assign({}, service, {
instances: getInstances(service.id)
});
})
);
};
};
const getDeploymentGroups = (opts, cb) => {
cb(null, deploymentGroups
.map((dg) => {
return Object.assign({}, dg, {
services: getServices(dg.id)
});
})
);
};
const getPortal = (opts, cb) => {
cb(null, {
deploymentGroups: getDeploymentGroups
});
};
const updateInstance = (instance, cb) => {
const instanceIndex = FindIndex(instances, ['id', instance.id]);
const updatedInstance = Object.assign(
{},
instances[instanceIndex],
instance
);
instances[instanceIndex] = updatedInstance;
return updatedInstance;
};
const updateService = (service, cb) => {
const serviceIndex = FindIndex(service, ['id', service.id]);
const updatedService = Object.assign({}, services[serviceIndex], service);
services[serviceIndex] = updatedService;
return updatedService;
};
return {
getPortal,
updateInstance,
updateService
};
};