jest-metadata
Version:
🦸♂️ Superhero power for your Jest reporters! 🦸♀️
68 lines • 2.64 kB
JavaScript
;
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