Skip to content

Commit

Permalink
test: Allow creation of multiple test entities
Browse files Browse the repository at this point in the history
Errors were thrown everywhere trying to create multiple models with the same ID.
  • Loading branch information
MonkeyDo committed Mar 23, 2020
1 parent 0b487df commit 036ecb3
Showing 1 changed file with 70 additions and 32 deletions.
102 changes: 70 additions & 32 deletions test/test-helpers/create-entities.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable no-console */
/* eslint-disable no-empty */
/*
* Copyright (C) 2019 Nicolas Pelletier
*
Expand All @@ -16,6 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

import {internet, random} from 'faker';
import orm from '../bookbrainz-data';
// eslint-disable-next-line import/no-internal-modules
import uuidv4 from 'uuid/v4';
Expand Down Expand Up @@ -107,33 +110,52 @@ const entityAttribs = {
};

export async function createEditor() {
editorTypeAttribs.id = random.number();
await new EditorType(editorTypeAttribs)
.save(null, {method: 'insert'});
await new Gender({...setData, name: 'test'})
const gender = await new Gender({...setData, id: random.number(), name: 'test'})
.save(null, {method: 'insert'});

editorAttribs.id = random.number();
editorAttribs.genderId = gender.get('id');
editorAttribs.typeId = editorTypeAttribs.id;
editorAttribs.name = internet.userName();
editorAttribs.metabrainzUserId = random.number();
editorAttribs.cachedMetabrainzName = editorAttribs.name;

await new Editor(editorAttribs)
.save(null, {method: 'insert'});
}

async function createAliasAndAliasSet() {
aliasData.languageId = random.number();
await new Language({...languageAttribs, id: aliasData.languageId})
.save(null, {method: 'insert'})
.catch(console.log);
const alias = await new Alias({...aliasData, id: random.number()})
.save(null, {method: 'insert'});
const alias = await new Alias(aliasData)
.save(null, {method: 'insert'});

entityAttribs.aliasSetId = random.number();
await new AliasSet({
...setData,
defaultAliasId: alias.get('id')
defaultAliasId: alias.get('id'),
id: entityAttribs.aliasSetId
})
.save(null, {method: 'insert'})
.then((model) => model.aliases().attach([alias]));
}

async function createIdentifierAndIdentifierSet() {
identifierTypeData.id = random.number();
await new IdentifierType(identifierTypeData)
.save(null, {method: 'insert'})
.catch(console.log);

identifierData.typeId = identifierTypeData.id;
const identifier = await new Identifier({...identifierData, id: random.number()})
.save(null, {method: 'insert'});
const identifier = await new Identifier(identifierData)
.save(null, {method: 'insert'});
await new IdentifierSet(setData)

entityAttribs.identifierSetId = random.number();
await new IdentifierSet({id: entityAttribs.identifierSetId})
.save(null, {method: 'insert'})
.then((model) => model.identifiers().attach([identifier]));
}
Expand All @@ -154,14 +176,20 @@ async function createRelationshipSet(sourceBbid, targetBbid, entityType, targetE
await new Entity({bbid: safeSourceBbid, type: entityType || 'Author'})
.save(null, {method: 'insert'});
}
relationshipTypeData.id = random.number();
await new RelationshipType(relationshipTypeData)
.save(null, {method: 'insert'});
.save(null, {method: 'insert'})
.catch(console.log);
await new Entity({bbid: safeTargetBbid, type: targetEntityType || 'Author'})
.save(null, {method: 'insert'});

relationshipData.typeId = relationshipTypeData.id;
relationshipData.id = random.number();
const relationship = await new Relationship(relationshipData)
.save(null, {method: 'insert'});
await new RelationshipSet(setData)

entityAttribs.relationshipSetId = random.number();
await new RelationshipSet({id: entityAttribs.relationshipSetId})
.save(null, {method: 'insert'})
.then(
(model) =>
Expand Down Expand Up @@ -189,15 +217,17 @@ async function createRelationshipAndRelationshipSet(sourceBbid, targetBbid, targ

async function createLanguageSet() {
// Create relationships here if you need them
await new Language(languageAttribs)
const language1Id = random.number();
const language2Id = random.number();
await new Language({...languageAttribs, id: language1Id})
.save(null, {method: 'insert'});
await new Language({...languageAttribs, id: 2})
await new Language({...languageAttribs, id: language2Id})
.save(null, {method: 'insert'});
const languageSet = await updateLanguageSet(
orm,
null,
null,
[{id: 1}, {id: 2}]
[{id: language1Id}, {id: language2Id}]
);
return languageSet.get('id');
}
Expand All @@ -212,17 +242,24 @@ async function createEntityPrerequisites(entityBbid) {
await createIdentifierAndIdentifierSet();
await createRelationshipSet(entityBbid);

await new Disambiguation({
...setData,
comment: 'Test Disambiguation'
const disambiguation = await new Disambiguation({
comment: 'Test Disambiguation',
id: random.number()
})
.save(null, {method: 'insert'});
entityAttribs.disambiguationId = disambiguation.get('id');

revisionAttribs.id = random.number();
revisionAttribs.authorId = editorAttribs.id;
await new Revision(revisionAttribs)
.save(null, {method: 'insert'});
entityAttribs.revisionId = revisionAttribs.id;

entityAttribs.annotationId = random.number();
await new Annotation({
...setData,
content: 'Test Annotation',
lastRevisionId: 1
id: entityAttribs.annotationId,
lastRevisionId: revisionAttribs.id
})
.save(null, {method: 'insert'});
}
Expand All @@ -248,9 +285,9 @@ export async function createWork(optionalBBID) {
const workAttribs = {
bbid,
languageSetId,
typeId: setData.id
typeId: random.number()
};
await new WorkType({...setData, label: 'Work Type 1'})
await new WorkType({id: workAttribs.typeId, label: 'Work Type 1'})
.save(null, {method: 'insert'});
await new Work({...entityAttribs, ...workAttribs})
.save(null, {method: 'insert'});
Expand All @@ -261,9 +298,9 @@ export async function createEditionGroup(optionalBBID) {
await createEntityPrerequisites();
const editionGroupAttribs = {
bbid,
typeId: setData.id
typeId: random.number()
};
await new EditionGroupType({...setData, label: 'Edition Group Type 1'})
await new EditionGroupType({id: editionGroupAttribs.typeId, label: 'Edition Group Type 1'})
.save(null, {method: 'insert'});
await new Entity({bbid, type: 'EditionGroup'})
.save(null, {method: 'insert'});
Expand All @@ -274,23 +311,24 @@ export async function createEditionGroup(optionalBBID) {
export async function createAuthor(optionalBBID) {
const bbid = optionalBBID || uuidv4();
await createEntityPrerequisites();
const areaId = random.number();
const authorAttribs = {
bbid,
beginAreaId: setData.id,
beginAreaId: areaId,
beginDay: 25,
beginMonth: 12,
beginYear: 2000,
endAreaId: setData.id,
endAreaId: areaId,
endDay: 10,
endMonth: 5,
endYear: 2012,
ended: true,
genderId: setData.id,
typeId: setData.id
genderId: editorAttribs.genderId,
typeId: random.number()
};
await new Area({...setData, gid: uuidv4(), name: 'Rlyeh'})
await new Area({gid: uuidv4(), id: areaId, name: 'Rlyeh'})
.save(null, {method: 'insert'});
await new AuthorType({...setData, label: 'Author Type 1'})
await new AuthorType({id: authorAttribs.typeId, label: 'Author Type 1'})
.save(null, {method: 'insert'});
await new Entity({bbid, type: 'Author'})
.save(null, {method: 'insert'});
Expand All @@ -302,7 +340,7 @@ export async function createPublisher(optionalBBID) {
const bbid = optionalBBID || uuidv4();
await createEntityPrerequisites();
const publisherAttribs = {
areaId: setData.id,
areaId: random.number(),
bbid,
beginDay: 25,
beginMonth: 12,
Expand All @@ -311,11 +349,11 @@ export async function createPublisher(optionalBBID) {
endMonth: 5,
endYear: 2012,
ended: true,
typeId: setData.id
typeId: random.number()
};
await new Area({...setData, gid: uuidv4(), name: 'Rlyeh'})
await new Area({gid: uuidv4(), id: publisherAttribs.areaId, name: 'Rlyeh'})
.save(null, {method: 'insert'});
await new PublisherType({...setData, label: 'Publisher Type 1'})
await new PublisherType({id: publisherAttribs.typeId, label: 'Publisher Type 1'})
.save(null, {method: 'insert'});
await new Entity({bbid, type: 'Publisher'})
.save(null, {method: 'insert'});
Expand Down

0 comments on commit 036ecb3

Please sign in to comment.