Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/lib/export/export.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ export class ExportService {
this._exportUtils.exportTag(i18ns, 'i18nString', i18n.value, false, [{
key: 'name',
value: i18n.name ?? '',
}]);
}], true);
});
doc.appendChild(i18ns);
});
Expand Down
2 changes: 1 addition & 1 deletion src/lib/import/import.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,7 @@ export class ImportService {
for (const xmlI18string of Array.from(xmlI18strings)) {
const name = this.importUtils.tagAttribute(xmlI18string, 'name');
try {
const translation = xmlI18string.innerHTML;
const translation = this.importUtils.parseDefinition(xmlI18string);
i18nNode.addI18n(new I18nString(translation, name));
} catch (e) {
result.addError(`Importing i18n string '${name}' failed`, e as Error);
Expand Down
31 changes: 23 additions & 8 deletions src/test/petriflow.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ const {
RoleEventType,
Template,
TransitionEventType,
TriggerType, PetriNet, DataVariable, Expression, Place, Transition,
RegularPlaceTransitionArc, DataEventSource, DataEvent, Action,
TriggerType, PetriNet, DataVariable, Place, Transition,
RegularPlaceTransitionArc, DataEvent, Action,
I18nTranslations, Mapping
} = require('../../dist/petriflow');
const fs = require('fs');
Expand Down Expand Up @@ -58,7 +58,7 @@ const MODEL_ROLES_LENGTH = 4;
const MODEL_TRANSITIONS_LENGTH = 13;
const MODEL_PLACES_LENGTH = 12;
const MODEL_ARCS_LENGTH = 17;
const MODEL_DATA_LENGTH = 24;
const MODEL_DATA_LENGTH = 25;
const MODEL_USERREFS_LENGTH = 2;
const ROLE_1_ID = 'newRole_1';
const ROLE_2_ID = 'newRole_2';
Expand All @@ -71,6 +71,7 @@ const ROLE_1_TITLE_NAME = 'role_1_title';
const TIME_TRIGGER_EXACT = '2021-07-14T08:00:00.000Z';
const TIME_TRIGGER_DELAY = 'PT5D';
const TEST_FILE_PATH = 'src/test/resources/petriflow_test.xml';
const TEST_HTML= 'test_html_i18n';

describe('Petriflow integration tests', () => {
let importService;
Expand Down Expand Up @@ -112,13 +113,17 @@ describe('Petriflow integration tests', () => {
}
}

function assertI18n(locale, i18ns, model) {
function assertI18n(locale, i18ns_equal, i18ns_contain, model) {
const i18nLocale = model.getI18n(locale);
expect(i18nLocale.getI18ns().length).toEqual(i18ns.length);
i18ns.forEach(i => {
expect(i18nLocale.getI18ns().length).toEqual(i18ns_equal.length + i18ns_contain.length);
i18ns_equal.forEach(i => {
expect(i18nLocale.getI18n(i)).not.toBeUndefined();
expect(i18nLocale.getI18n(i).value).toEqual(`${locale.toUpperCase()}_${i}`);
});
i18ns_contain.forEach(i => {
expect(i18nLocale.getI18n(i)).not.toBeUndefined();
expect(i18nLocale.getI18n(i).value).toContain(`${locale.toUpperCase()}_${i}`);
});
}

function assertRoleRefLogic(roleRef, perform, delegate, cancel, assign, view) {
Expand Down Expand Up @@ -308,6 +313,13 @@ describe('Petriflow integration tests', () => {
const textFieldComponent = textField.component;
expect(textFieldComponent).not.toBeUndefined();
expect(textFieldComponent.name).toEqual('area');
const htmlField = model.getData('newVariable_22');
expect(htmlField.type).toEqual(DataType.TEXT);
expect(htmlField.title.value).toEqual('HTMLTextArea init translation with HTML');
expect(htmlField.init).not.toBeUndefined();
expect(htmlField.init.name).toEqual(TEST_HTML);
expect(htmlField.component.name).toEqual('htmltextarea');

const enumerationField = model.getData('newVariable_3');
expect(enumerationField).not.toBeUndefined();
expect(enumerationField.options.length).toEqual(3);
Expand Down Expand Up @@ -461,8 +473,11 @@ describe('Petriflow integration tests', () => {
'newVariable_19_name',
'case_create_message'
];
assertI18n('uk', i18ns, model);
assertI18n('de', i18ns, model);
const i18ns_contain = [
TEST_HTML
];
assertI18n('uk', i18ns, i18ns_contain, model);
assertI18n('de', i18ns, i18ns_contain, model);
log('Model i18n correct');

// TODO: mapping?
Expand Down
290 changes: 244 additions & 46 deletions src/test/resources/petriflow_test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -506,58 +506,256 @@
</data>
<data type="i18n">
<id>newVariable_21</id>
<title>i18n no translation</title>
<title>i18n init translation</title>
<init name="newVariable_21_name">newVariable_21 name value</init>
</data>
<data type="text">
<id>newVariable_22</id>
<title>HTMLTextArea init translation with HTML</title>
<init name="test_html_i18n"><![CDATA[<h2>Nadpis</h2>]]></init>
<component>
<name>htmltextarea</name>
</component>
</data>
<!-- I18NS -->
<i18n locale="uk">
<i18nString name="title">UK_title</i18nString>
<i18nString name="title">duplicate title</i18nString>
<i18nString name="p1_label">UK_p1_label</i18nString>
<i18nString name="t1_label">UK_t1_label</i18nString>
<i18nString name="role_1_title">UK_role_1_title</i18nString>
<i18nString name="role_2_title">UK_role_2_title</i18nString>
<i18nString name="role_3_title">UK_role_3_title</i18nString>
<i18nString name="role_4_title">UK_role_4_title</i18nString>
<i18nString name="newVariable_2_title">UK_newVariable_2_title</i18nString>
<i18nString name="newVariable_2_placeholder">UK_newVariable_2_placeholder</i18nString>
<i18nString name="newVariable_2_desc">UK_newVariable_2_desc</i18nString>
<i18nString name="newVariable_2_valid_email">UK_newVariable_2_valid_email</i18nString>
<i18nString name="t1_assign_message">UK_t1_assign_message</i18nString>
<i18nString name="t1_assign_title">UK_t1_assign_title</i18nString>
<i18nString name="t5_datagroup">UK_t5_datagroup</i18nString>
<i18nString name="newVariable_3_value1">UK_newVariable_3_value1</i18nString>
<i18nString name="newVariable_3_value2">UK_newVariable_3_value2</i18nString>
<i18nString name="newVariable_3_value3">UK_newVariable_3_value3</i18nString>
<i18nString name="newVariable_4_option_1">UK_newVariable_4_option_1</i18nString>
<i18nString name="newVariable_4_option_2">UK_newVariable_4_option_2</i18nString>
<i18nString name="newVariable_4_option_3">UK_newVariable_4_option_3</i18nString>
<i18nString name="newVariable_19_name">UK_newVariable_19_name</i18nString>
<i18nString name="case_create_message">UK_case_create_message</i18nString>
<i18nString name="title">
<![CDATA[
UK_title
]]>
</i18nString>
<i18nString name="title">
<![CDATA[
duplicate title
]]>
</i18nString>
<i18nString name="p1_label">
<![CDATA[
UK_p1_label
]]>
</i18nString>
<i18nString name="t1_label">
<![CDATA[
UK_t1_label
]]>
</i18nString>
<i18nString name="role_1_title">
<![CDATA[
UK_role_1_title
]]>
</i18nString>
<i18nString name="role_2_title">
<![CDATA[
UK_role_2_title
]]>
</i18nString>
<i18nString name="role_3_title">
<![CDATA[
UK_role_3_title
]]>
</i18nString>
<i18nString name="role_4_title">
<![CDATA[
UK_role_4_title
]]>
</i18nString>
<i18nString name="newVariable_2_title">
<![CDATA[
UK_newVariable_2_title
]]>
</i18nString>
<i18nString name="newVariable_2_placeholder">
<![CDATA[
UK_newVariable_2_placeholder
]]>
</i18nString>
<i18nString name="newVariable_2_desc">
<![CDATA[
UK_newVariable_2_desc
]]>
</i18nString>
<i18nString name="newVariable_2_valid_email">
<![CDATA[
UK_newVariable_2_valid_email
]]>
</i18nString>
<i18nString name="t1_assign_message">
<![CDATA[
UK_t1_assign_message
]]>
</i18nString>
<i18nString name="t1_assign_title">
<![CDATA[
UK_t1_assign_title
]]>
</i18nString>
<i18nString name="t5_datagroup">
<![CDATA[
UK_t5_datagroup
]]>
</i18nString>
<i18nString name="newVariable_3_value1">
<![CDATA[
UK_newVariable_3_value1
]]>
</i18nString>
<i18nString name="newVariable_3_value2">
<![CDATA[
UK_newVariable_3_value2
]]>
</i18nString>
<i18nString name="newVariable_3_value3">
<![CDATA[
UK_newVariable_3_value3
]]>
</i18nString>
<i18nString name="newVariable_4_option_1">
<![CDATA[
UK_newVariable_4_option_1
]]>
</i18nString>
<i18nString name="newVariable_4_option_2">
<![CDATA[
UK_newVariable_4_option_2
]]>
</i18nString>
<i18nString name="newVariable_4_option_3">
<![CDATA[
UK_newVariable_4_option_3
]]>
</i18nString>
<i18nString name="newVariable_19_name">
<![CDATA[
UK_newVariable_19_name
]]>
</i18nString>
<i18nString name="case_create_message">
<![CDATA[
UK_case_create_message
]]>
</i18nString>
<i18nString name="test_html_i18n">
<![CDATA[
<h2>UK_test_html_i18n</h2>
]]>
</i18nString>
</i18n>
<i18n locale="de">
<i18nString name="title">DE_title</i18nString>
<i18nString name="p1_label">DE_p1_label</i18nString>
<i18nString name="t1_label">DE_t1_label</i18nString>
<i18nString name="role_1_title">DE_role_1_title</i18nString>
<i18nString name="role_2_title">DE_role_2_title</i18nString>
<i18nString name="role_3_title">DE_role_3_title</i18nString>
<i18nString name="role_4_title">DE_role_4_title</i18nString>
<i18nString name="newVariable_2_title">DE_newVariable_2_title</i18nString>
<i18nString name="newVariable_2_placeholder">DE_newVariable_2_placeholder</i18nString>
<i18nString name="newVariable_2_desc">DE_newVariable_2_desc</i18nString>
<i18nString name="newVariable_2_valid_email">DE_newVariable_2_valid_email</i18nString>
<i18nString name="t1_assign_message">DE_t1_assign_message</i18nString>
<i18nString name="t1_assign_title">DE_t1_assign_title</i18nString>
<i18nString name="t5_datagroup">DE_t5_datagroup</i18nString>
<i18nString name="newVariable_3_value1">DE_newVariable_3_value1</i18nString>
<i18nString name="newVariable_3_value2">DE_newVariable_3_value2</i18nString>
<i18nString name="newVariable_3_value3">DE_newVariable_3_value3</i18nString>
<i18nString name="newVariable_4_option_1">DE_newVariable_4_option_1</i18nString>
<i18nString name="newVariable_4_option_2">DE_newVariable_4_option_2</i18nString>
<i18nString name="newVariable_4_option_3">DE_newVariable_4_option_3</i18nString>
<i18nString name="newVariable_19_name">DE_newVariable_19_name</i18nString>
<i18nString name="case_create_message">DE_case_create_message</i18nString>
<i18nString name="title">
<![CDATA[
DE_title
]]>
</i18nString>
<i18nString name="p1_label">
<![CDATA[
DE_p1_label
]]>
</i18nString>
<i18nString name="t1_label">
<![CDATA[
DE_t1_label
]]>
</i18nString>
<i18nString name="role_1_title">
<![CDATA[
DE_role_1_title
]]>
</i18nString>
<i18nString name="role_2_title">
<![CDATA[
DE_role_2_title
]]>
</i18nString>
<i18nString name="role_3_title">
<![CDATA[
DE_role_3_title
]]>
</i18nString>
<i18nString name="role_4_title">
<![CDATA[
DE_role_4_title
]]>
</i18nString>
<i18nString name="newVariable_2_title">
<![CDATA[
DE_newVariable_2_title
]]>
</i18nString>
<i18nString name="newVariable_2_placeholder">
<![CDATA[
DE_newVariable_2_placeholder
]]>
</i18nString>
<i18nString name="newVariable_2_desc">
<![CDATA[
DE_newVariable_2_desc
]]>
</i18nString>
<i18nString name="newVariable_2_valid_email">
<![CDATA[
DE_newVariable_2_valid_email
]]>
</i18nString>
<i18nString name="t1_assign_message">
<![CDATA[
DE_t1_assign_message
]]>
</i18nString>
<i18nString name="t1_assign_title">
<![CDATA[
DE_t1_assign_title
]]>
</i18nString>
<i18nString name="t5_datagroup">
<![CDATA[
DE_t5_datagroup
]]>
</i18nString>
<i18nString name="newVariable_3_value1">
<![CDATA[
DE_newVariable_3_value1
]]>
</i18nString>
<i18nString name="newVariable_3_value2">
<![CDATA[
DE_newVariable_3_value2
]]>
</i18nString>
<i18nString name="newVariable_3_value3">
<![CDATA[
DE_newVariable_3_value3
]]>
</i18nString>
<i18nString name="newVariable_4_option_1">
<![CDATA[
DE_newVariable_4_option_1
]]>
</i18nString>
<i18nString name="newVariable_4_option_2">
<![CDATA[
DE_newVariable_4_option_2
]]>
</i18nString>
<i18nString name="newVariable_4_option_3">
<![CDATA[
DE_newVariable_4_option_3
]]>
</i18nString>
<i18nString name="newVariable_19_name">
<![CDATA[
DE_newVariable_19_name
]]>
</i18nString>
<i18nString name="case_create_message">
<![CDATA[
DE_case_create_message
]]>
</i18nString>
<i18nString name="test_html_i18n">
<![CDATA[
<h2>DE_test_html_i18n</h2>
]]>
</i18nString>
</i18n>
<i18n locale="sk">
</i18n>
Expand Down
Loading