@mendix/pluggable-widgets-tools
Version:
Mendix Pluggable Widgets Tools
217 lines (216 loc) • 12.9 kB
JavaScript
"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;
}