1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import Neo4j, * as Neo4jMock from 'neo4j-driver';
- import { CompletionEvent } from '../src/events';
- jest.mock('neo4j-driver');
- let counter = 1;
- export function clearIdCounter() {
- counter = 1;
- }
- export function makeNode(labels, properties = {}) {
- return new Neo4j.types.Node(Neo4j.int(counter++), labels, properties);
- }
- export function makeRelationship(type, startNode, endNode, properties = {}) {
- return new Neo4j.types.Relationship(Neo4j.int(counter++), startNode.identity, endNode.identity, type, properties);
- }
- export function makePathFromNodes(nodes, relationshipType) {
- const pathSegments = [];
- for (let i = 0; i < nodes.length - 1; i++) {
- pathSegments.push(new Neo4j.types.PathSegment(
- nodes[i],
- makeRelationship(relationshipType, nodes[i], nodes[i + 1]),
- nodes[i + 1]
- ));
- }
- return new Neo4j.types.Path(nodes[0], nodes[nodes.length - 1], pathSegments);
- }
- export function makeRecord(parameters) {
- const recordKeys = parameters.map((_, index) => index.toString());
- return new Neo4j.types.Record(recordKeys, parameters);
- }
- export function assertNodes(neovis, nodes, assertFunction) {
- nodes.forEach(node => {
- const dataSetNode = neovis._data.nodes.get(node.identity.toInt());
- assertFunction(node, dataSetNode);
- });
- }
- export function assertEdges(neovis, edges, assertFunction) {
- edges.forEach(edges => {
- const dataSetEdge = neovis._data.edges.get(edges.identity.toInt());
- assertFunction(edges, dataSetEdge);
- });
- }
- export function mockNormalRunSubscribe(records = []) {
- Neo4jMock.mockSessionRun.mockImplementation(() => {
- const observablePromise = Promise.resolve({records});
- observablePromise.subscribe = ({onNext, onCompleted}) => {
- records.forEach(onNext);
- onCompleted();
- };
- return observablePromise;
- });
- }
- export function mockFullRunSubscribe(cypherIdsAndAnswers) {
- Neo4jMock.mockSessionRun.mockImplementation((cypher, parameters) => {
- if (!cypherIdsAndAnswers[cypher]) {
- throw new Error(`the cypher '${cypher}' was not expected`);
- }
- if (!cypherIdsAndAnswers[cypher].default && !cypherIdsAndAnswers[cypher][parameters.id.toInt()]) {
- throw new Error(`the id '${parameters.id}' was not expected for cypher ${cypher}`);
- }
- const records = cypherIdsAndAnswers[cypher].default || cypherIdsAndAnswers[cypher][parameters.id.toInt()];
- const observablePromise = Promise.resolve({records});
- observablePromise.subscribe = ({onNext, onCompleted}) => {
- records.forEach(onNext);
- onCompleted();
- };
- return observablePromise;
- });
- }
- export function neovisRenderDonePromise(neovis) {
- return new Promise(res => neovis.registerOnEvent(CompletionEvent, res));
- }
|