UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

14 lines (13 loc) 1.29 kB
import { initialPoolForEntityGraph } from './_internals/InitialPoolForEntityGraphArbitrary.js'; import { unlinkedToLinkedEntitiesMapper } from './_internals/mappers/UnlinkedToLinkedEntities.js'; import { onTheFlyLinksForEntityGraph } from './_internals/OnTheFlyLinksForEntityGraphArbitrary.js'; import { unlinkedEntitiesForEntityGraph } from './_internals/UnlinkedEntitiesForEntityGraph.js'; const safeObjectCreate = Object.create; const safeObjectKeys = Object.keys; export /**@__NO_SIDE_EFFECTS__*/function entityGraph(arbitraries, relations, constraints = {}) { const allKeys = safeObjectKeys(arbitraries); const initialPoolConstraints = constraints.initialPoolConstraints || safeObjectCreate(null); const unicityConstraints = constraints.unicityConstraints || safeObjectCreate(null); const unlinkedContraints = { noNullPrototype: constraints.noNullPrototype }; return (initialPoolForEntityGraph(allKeys, initialPoolConstraints).chain((defaultEntities) => onTheFlyLinksForEntityGraph(relations, defaultEntities).chain((producedLinks) => unlinkedEntitiesForEntityGraph(arbitraries, (name) => producedLinks[name].length, (name) => unicityConstraints[name], unlinkedContraints).map((unlinkedEntities) => unlinkedToLinkedEntitiesMapper(unlinkedEntities, producedLinks))))); }