chore: add target host set mocks

This commit is contained in:
Randall Morey committed 2020-08-25 15:45:51 -04:00
1 parent 590c33f5fa
commit b166a35dd6
4 files changed
+40 -6

No files matched your search

+12 -4
View File
@@ -1,13 +1,21 @@
import factory from '../generated/factories/target';
import { trait } from 'ember-cli-mirage';
const randomBoolean = (chance = 0.5) => Math.random() < chance;
const hostSetChance = 0.3;
export default factory.extend({
withChildren: trait({
/**
* Randomly selects existing host sets to assign to target.
*/
withRandomHostSets: trait({
afterCreate(target, server) {
const scope = target.scope;
const hosts = server.createList('host', 10, { scope });
server.createList('host-set', 3, { scope, target , hosts});
let randomlySelectedHostSets;
randomlySelectedHostSets = server.schema.hostSets
.where(item => item.scope.id === target.scope.id).models
.filter(() => randomBoolean(hostSetChance));
target.update({hostSets: randomlySelectedHostSets});
}
})
+7
View File
@@ -0,0 +1,7 @@
import { Model, hasMany } from 'ember-cli-mirage';
export default Model.extend({
hostSets: hasMany()
});
+1 -1
View File
@@ -33,7 +33,7 @@ export default function(server) {
server.db.scopes.where({type: 'project'}).forEach(({ id, type }) => {
const scope = { id, type };
server.createList('host-catalog', 2, { scope }, 'withChildren');
server.createList('target', 2, { scope }, 'withChildren');
server.createList('target', 2, { scope }, 'withRandomHostSets');
});
}
+20 -1
View File
@@ -1,5 +1,24 @@
import ApplicationSerializer from './application';
import { underscore } from '@ember/string';
export default ApplicationSerializer.extend({
modelName: 'target'
modelName: 'target',
keyForRelationshipIds(relationshipName) {
return `${this._container.inflector.singularize(
underscore(relationshipName)
)}_ids`;
},
_hashForModel(model) {
const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments);
const { hostSets } = this.schema;
json.host_sets = model.hostSetIds.map(host_set_id => {
const hostSet = hostSets.find(host_set_id);
const host_catalog_id = hostSet?.hostCatalog?.id;
return { host_set_id, host_catalog_id };
});
return json;
}
});