UNPKG

@mendix/pluggable-widgets-tools

Version:
217 lines (216 loc) 12.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const xml2js_1 = require("xml2js"); const list_action_1 = require("./inputs/list-action"); const list_action_2 = require("./outputs/list-action"); const list_association_1 = require("./inputs/list-association"); const list_association_2 = require("./outputs/list-association"); const list_image_1 = require("./inputs/list-image"); const list_image_2 = require("./outputs/list-image"); const icon_1 = require("./inputs/icon"); const icon_2 = require("./outputs/icon"); const containment_1 = require("./inputs/containment"); const containment_2 = require("./outputs/containment"); const file_1 = require("./inputs/file"); const file_2 = require("./outputs/file"); const list_files_1 = require("./inputs/list-files"); const list_files_2 = require("./outputs/list-files"); const datasource_1 = require("./inputs/datasource"); const datasource_2 = require("./outputs/datasource"); const generate_1 = require("../generate"); const generateClientTypes_1 = require("../generateClientTypes"); const helpers_1 = require("../helpers"); const inputs_1 = require("./inputs"); const outputs_1 = require("./outputs"); const atribute_linked_action_1 = require("./inputs/atribute-linked-action"); const atribute_linked_action_2 = require("./outputs/atribute-linked-action"); const association_1 = require("./inputs/association"); const association_2 = require("./outputs/association"); const expression_1 = require("./inputs/expression"); const expression_2 = require("./outputs/expression"); const selection_1 = require("./inputs/selection"); const selection_2 = require("./outputs/selection"); const list_attribute_refset_1 = require("./inputs/list-attribute-refset"); const list_attribute_refset_2 = require("./outputs/list-attribute-refset"); const non_linked_list_attribute_refset_1 = require("./inputs/non-linked-list-attribute-refset"); const non_linked_list_attribute_refset_2 = require("./outputs/non-linked-list-attribute-refset"); const metadata_attribute_1 = require("./inputs/metadata-attribute"); const metadata_attribute_2 = require("./outputs/metadata-attribute"); const metadata_association_1 = require("./inputs/metadata-association"); const metadata_association_2 = require("./outputs/metadata-association"); const list_action_with_variables_1 = require("./inputs/list-action-with-variables"); const list_action_with_variables_2 = require("./outputs/list-action-with-variables"); describe("Generating tests", () => { it("Generates a parsed typing from XML for native", () => { const newContent = generateFullTypesFor(inputs_1.contentNative); expect(newContent).toBe(outputs_1.nativeResult); }); it("Generates a parsed typing from XML for web", () => { const newContent = generateFullTypesFor(inputs_1.content); expect(newContent).toBe(outputs_1.webResult); }); it("Generates a parsed typing from XML for native with groups", () => { const newContent = generateFullTypesFor(inputs_1.contentGroupNative); expect(newContent).toBe(outputs_1.nativeResult); }); it("Generates a parsed typing from XML for web with groups", () => { const newContent = generateFullTypesFor(inputs_1.contentGroup); expect(newContent).toBe(outputs_1.webResultGroup); }); it("Generates a parsed typing from XML for native using list of actions", () => { const newContent = generateNativeTypesFor(list_action_1.listActionInputNative); expect(newContent).toBe(list_action_2.listActionNativeOutput); }); it("Generates a parsed typing from XML for web using list of actions", () => { const newContent = generateFullTypesFor(list_action_1.listActionInput); expect(newContent).toBe(list_action_2.listActionWebOutput); }); it("Generates a parsed typing from XML for native using list of actions with variables", () => { const newContent = generateNativeTypesFor(list_action_with_variables_1.listActionWithVariablesInputNative); expect(newContent).toBe(list_action_with_variables_2.listActionWithVariablesOutputNative); }); it("Generates a parsed typing from XML for web using list of actions with variables", () => { const newContent = generateFullTypesFor(list_action_with_variables_1.listActionWithVariablesInput); expect(newContent).toBe(list_action_with_variables_2.listActionWithVariablesOutput); }); it("Generates a parsed typing from XML for native using list of images", () => { const newContent = generateNativeTypesFor(list_image_1.listImageInputNative); expect(newContent).toBe(list_image_2.listImageNativeOutput); }); it("Generates a parsed typing from XML for web using list of images", () => { const newContent = generateFullTypesFor(list_image_1.listImageInput); expect(newContent).toBe(list_image_2.listImageWebOutput); }); it("Generates a parsed typing from XML for native using icons", () => { const newContent = generateNativeTypesFor(icon_1.iconInputNative); expect(newContent).toBe(icon_2.iconNativeOutput); }); it("Generates a parsed typing from XML for web using icons", () => { const newContent = generateFullTypesFor(icon_1.iconInput); expect(newContent).toBe(icon_2.iconWebOutput); }); it("Generates a parsed typing from XML for web using containment", () => { const newContent = generateFullTypesFor(containment_1.containmentInput); expect(newContent).toBe(containment_2.containmentWebOutput); }); it("Generates a parsed typing from XML for native using containment", () => { const newContent = generateNativeTypesFor(containment_1.containmentInputNative); expect(newContent).toBe(containment_2.containmentNativeOutput); }); it("Generates a parsed typing from XML for web using file", () => { const newContent = generateFullTypesFor(file_1.fileInput); expect(newContent).toBe(file_2.fileWebOutput); }); it("Generates a parsed typing from XML for native using file", () => { const newContent = generateNativeTypesFor(file_1.fileInputNative); expect(newContent).toBe(file_2.fileNativeOutput); }); it("Generates a parsed typing from XML for web using a list of file", () => { const newContent = generateFullTypesFor(list_files_1.listFileInput); expect(newContent).toBe(list_files_2.listFileWebOutput); }); it("Generates a parsed typing from XML for native using a list of file", () => { const newContent = generateNativeTypesFor(list_files_1.listFileInputNative); expect(newContent).toBe(list_files_2.listFileNativeOutput); }); it("Generates a parsed typing from XML for web using datasource", () => { const newContent = generateFullTypesFor(datasource_1.datasourceInput); expect(newContent).toBe(datasource_2.datasourceWebOutput); }); it("Generates a parsed typing from XML for native using datasource", () => { const newContent = generateNativeTypesFor(datasource_1.datasourceInputNative); expect(newContent).toBe(datasource_2.datasourceNativeOutput); }); it("Generates a parsed typing from XML for widget with attribute linked action", () => { const newContent = generateFullTypesFor(atribute_linked_action_1.attributeLinkedActionInput); expect(newContent).toBe(atribute_linked_action_2.attributeLinkedActionOutput); }); it("Generates a parsed typing from XML for widget with attribute nested linked action", () => { const newContent = generateFullTypesFor(atribute_linked_action_1.attributeNestedLinkedActionInput); expect(newContent).toBe(atribute_linked_action_2.attributeNestedLinkedActionOutput); }); it("Generates a parsed typing from XML for web using association", () => { const newContent = generateFullTypesFor(association_1.associationInput); expect(newContent).toBe(association_2.associationWebOutput); }); it("Generates a parsed typing from XML for native using association", () => { const newContent = generateNativeTypesFor(association_1.associationInputNative); expect(newContent).toBe(association_2.associationNativeOutput); }); it("Generates a parsed typing from XML for web using linked association", () => { const newContent = generateFullTypesFor(list_association_1.listAssociationWebInput); expect(newContent).toBe(list_association_2.listAssociationWebOutput); }); it("Generates a parsed typing from XML for native using linked association", () => { const newContent = generateNativeTypesFor(list_association_1.listAssociationNativeInput); expect(newContent).toBe(list_association_2.listAssociationNativeOutput); }); it("Generates a parsed typing from XML for web using expression", () => { const newContent = generateFullTypesFor(expression_1.expressionInput); expect(newContent).toBe(expression_2.expressionWebOutput); }); it("Generates a parsed typing from XML for native using expression", () => { const newContent = generateNativeTypesFor(expression_1.expressionInputNative); expect(newContent).toBe(expression_2.expressionNativeOutput); }); it("Generates a parsed typing from XML for web using selection", () => { const newContent = generateFullTypesFor(selection_1.selectionInput); expect(newContent).toBe(selection_2.selectionWebOutput); }); it("Generates a parsed typing from XML for native using selection", () => { const newContent = generateNativeTypesFor(selection_1.selectionInputNative); expect(newContent).toBe(selection_2.selectionNativeOutput); }); it("Generates a parsed typing from XML for web using ref sets in linked attribute", () => { const newContent = generateFullTypesFor(list_attribute_refset_1.listAttributeWebInput); expect(newContent).toBe(list_attribute_refset_2.listAttributeWebOutput); }); it("Generates a parsed typing from XML for native using ref sets in linked attribute", () => { const newContent = generateNativeTypesFor(list_attribute_refset_1.listAttributeNativeInput); expect(newContent).toBe(list_attribute_refset_2.listAttributeNativeOutput); }); it("Generates a parsed typing from XML for web using ref sets in non-linked attribute", () => { const newContent = generateFullTypesFor(non_linked_list_attribute_refset_1.nonLinkedListAttributeWebInput); expect(newContent).toBe(non_linked_list_attribute_refset_2.nonLinkedListAttributeWebOutput); }); it("Generates a parsed typing from XML for native using ref sets in non-linked attribute", () => { const newContent = generateNativeTypesFor(non_linked_list_attribute_refset_1.nonLinkedListAttributeNativeInput); expect(newContent).toBe(non_linked_list_attribute_refset_2.nonLinkedListAttributeNativeOutput); }); it("Generates a parsed typing from XML for web using metadata attribute", () => { const newContent = generateFullTypesFor(metadata_attribute_1.attributeMetaDataWebInput); expect(newContent).toBe(metadata_attribute_2.attributeMetaDataWebOutput); }); it("Generates a parsed typing from XML for native using metadata attribute", () => { const newContent = generateNativeTypesFor(metadata_attribute_1.attributeMetaDataNativeInput); expect(newContent).toBe(metadata_attribute_2.attributeMetaDataNativeOutput); }); it("Generates a parsed typing from XML for web using metadata association", () => { const newContent = generateFullTypesFor(metadata_association_1.associationMetaDataWebInput); expect(newContent).toBe(metadata_association_2.associationMetaDataWebOutput); }); it("Generates a parsed typing from XML for native using metadata association", () => { const newContent = generateNativeTypesFor(metadata_association_1.associationMetaDataNativeInput); expect(newContent).toBe(metadata_association_2.associationMetaDataNativeOutput); }); }); function generateFullTypesFor(xml) { return (0, generate_1.generateForWidget)(convertXmltoJson(xml), "MyWidget"); } function generateNativeTypesFor(xml) { const widgetXml = convertXmltoJson(xml); const properties = widgetXml.widget.properties[0]; return (0, generateClientTypes_1.generateClientTypes)("MyWidget", (0, helpers_1.extractProperties)(properties), (0, helpers_1.extractSystemProperties)(properties), true).join("\n\n"); } function convertXmltoJson(xml) { let content = {}; if (xml) { (0, xml2js_1.parseString)(xml, {}, (err, result) => { if (err) { throw err; } content = result; }); } return content; }