UNPKG

jest-metadata

Version:

🦸‍♂️ Superhero power for your Jest reporters! 🦸‍♀️

68 lines 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlantMetadataVisitor = void 0; const MetadataVisitor_1 = require("../MetadataVisitor"); const MetadataPlantObject_1 = require("./MetadataPlantObject"); const PlantLink_1 = require("./PlantLink"); class PlantMetadataVisitor extends MetadataVisitor_1.MetadataVisitor { objects = []; links = []; generatePlantUML() { const header = '@startuml\n\n'; const footer = '\n@enduml\n'; const objectsSection = this.objects.map((o) => o.toString()).join('\n') + '\n'; const linksSection = this.links.map((l) => l.toString()).join('\n') + '\n'; return header + objectsSection + linksSection + footer; } visit(metadata) { this.objects.push(new MetadataPlantObject_1.MetadataPlantObject(metadata)); super.visit(metadata); } visitGlobal(metadata) { this._registerLink(metadata, 'testFiles'); } visitDescribeBlock(metadata) { this._registerLink(metadata, 'children'); } visitHookDefinition(metadata) { const plantObject = this.objects[this.objects.length - 1]; plantObject.properties.hookType = metadata.hookType; this._registerLink(metadata, 'invocations'); } visitHookInvocation(_metadata) { // Do nothing // this._registerLink(metadata, 'definition'); // this._registerLink(metadata, 'parent'); } visitTestFile(metadata) { this._registerLink(metadata, 'rootDescribeBlock'); } visitTestEntry(metadata) { this._registerLink(metadata, 'invocations'); } visitTestFnInvocation(metadata) { this._registerLink(metadata, 'test'); } visitTestInvocation(metadata) { this._registerLink(metadata, 'beforeAll'); this._registerLink(metadata, 'beforeEach'); this._registerLink(metadata, 'fn'); this._registerLink(metadata, 'afterEach'); this._registerLink(metadata, 'afterAll'); } _registerLink(metadata, key) { const value = metadata[key]; if (typeof value?.id === 'string') { this.links.push(new PlantLink_1.PlantLink(metadata.id, value.id, key)); } if (typeof value?.entries === 'function') { for (const [i, element] of value.entries()) { if (typeof element?.id === 'string') { this.links.push(new PlantLink_1.PlantLink(metadata.id, element.id, `${key}[${i}]`)); } } } } } exports.PlantMetadataVisitor = PlantMetadataVisitor; //# sourceMappingURL=PlantMetadataVisitor.js.map