UNPKG

formiojs

Version:

Common js library for client side interaction with <form.io>

443 lines (301 loc) 17.2 kB
"use strict"; var _harness = _interopRequireDefault(require("../../../test/harness")); var _Currency = _interopRequireDefault(require("./Currency")); var _powerAssert = _interopRequireDefault(require("power-assert")); var _fixtures = require("./fixtures"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('Currency Component', function () { before(function (done) { // Need to polyfill some Intl.locale support, since node doesn't include it in standard builds require('../../../test/numberFormatPolyfill'); done(); }); it('Should build a currency component', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1).then(function (component) { _harness.default.testElements(component, 'input[type="text"]', 1); }); }); it('Should place a caret between the period and the underline.', function (done) { _harness.default.testCreate(_Currency.default, _fixtures.comp3, { language: 'en-US' }).then(function (component) { var inputEvent = new Event('input'); var currencyElement = component.element.querySelector('[name="data[currency]"]'); currencyElement.value = 42; currencyElement.dispatchEvent(inputEvent); _powerAssert.default.equal(currencyElement.value, '$42'); currencyElement.value = '.'; currencyElement.dispatchEvent(inputEvent); setTimeout(function () { _powerAssert.default.equal(currencyElement.selectionStart, 3); done(); }, 200); }); }); it('Should format value on blur for USA locale', function (done) { _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-US' }).then(function (component) { component.root = { onChange: function onChange() {}, triggerChange: function triggerChange() {} }; var blurEvent = new Event('blur'); var inputEvent = new Event('input'); var valueElement = component.element.querySelector('[name="data[money]"]'); valueElement.value = 22222222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(valueElement.value, '$22,222,222.00'); valueElement.value = 22222222.2; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(valueElement.value, '$22,222,222.20'); valueElement.value = 22222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(valueElement.value, '$22,222.00'); valueElement.value = 222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(valueElement.value, '$222.00'); valueElement.value = 2; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(valueElement.value, '$2.00'); done(); }); }); it('Should format value on blur for French locale', function (done) { _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'fr' }).then(function (component) { component.root = { onChange: function onChange() {}, triggerChange: function triggerChange() {} }; var blurEvent = new Event('blur'); var inputEvent = new Event('input'); var valueElement = component.element.querySelector('[name="data[money]"]'); valueElement.value = 22222222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.deepEqual(valueElement.value, '22222222,00 $US'); valueElement.value = '22222222,2'; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.deepEqual(valueElement.value, '22222222,20 $US'); valueElement.value = 22222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.deepEqual(valueElement.value, '22222,00 $US'); valueElement.value = 222; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.deepEqual(valueElement.value, '222,00 $US'); valueElement.value = 2; valueElement.dispatchEvent(inputEvent); valueElement.dispatchEvent(blurEvent); _powerAssert.default.deepEqual(valueElement.value, '2,00 $US'); done(); }); }); it('Should not change entered value on blur if multiple value is set', function (done) { _harness.default.testCreate(_Currency.default, _fixtures.comp2).then(function (component) { component.root = { onChange: function onChange() {}, triggerChange: function triggerChange() {} }; var blurEvent = new Event('blur'); var clickEvent = new Event('click'); var addBtn = component.refs.addButton[0]; addBtn.dispatchEvent(clickEvent); var firstValueElement = component.element.querySelectorAll('[name="data[currency]"]')[0]; var secondValueElement = component.element.querySelectorAll('[name="data[currency]"]')[1]; component.setValue([111, 222]); firstValueElement.dispatchEvent(blurEvent); secondValueElement.dispatchEvent(blurEvent); _powerAssert.default.equal(component.dataValue[0], component.getValue()[0]); _powerAssert.default.equal(component.dataValue[1], component.getValue()[1]); done(); }); }); it('Should format currency submissions for table view for French locale', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'fr' }).then(function (component) { var value1 = component.getValueAsString(1); var value2 = component.getValueAsString(1.1); var value3 = component.getValueAsString(1.11); var value4 = component.getValueAsString(1111); var value5 = component.getValueAsString(1111111); var value6 = component.getValueAsString(-11111); _powerAssert.default.equal(value1, '1,00 $US'); _powerAssert.default.equal(value2, '1,10 $US'); _powerAssert.default.equal(value3, '1,11 $US'); _powerAssert.default.equal(value4, '1111,00 $US'); _powerAssert.default.equal(value5, '1111111,00 $US'); _powerAssert.default.equal(value6, '-11111,00 $US'); }); }); it('Should format currency sumbissions for table view for USA locale', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-US' }).then(function (component) { var value1 = component.getValueAsString(1); var value2 = component.getValueAsString(1.1); var value3 = component.getValueAsString(1.11); var value4 = component.getValueAsString(1111); var value5 = component.getValueAsString(1111111); var value6 = component.getValueAsString(-11111); _powerAssert.default.equal(value1, '$1.00'); _powerAssert.default.equal(value2, '$1.10'); _powerAssert.default.equal(value3, '$1.11'); _powerAssert.default.equal(value4, '$1,111.00'); _powerAssert.default.equal(value5, '$1,111,111.00'); _powerAssert.default.equal(value6, '-$11,111.00'); }); }); it('Should add trailing zeros', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-US' }).then(function (component) { _powerAssert.default.equal(component.addZerosAndFormatValue(null)); _powerAssert.default.equal(component.addZerosAndFormatValue('3'), '3.00'); _powerAssert.default.equal(component.addZerosAndFormatValue('3.1'), '3.10'); _powerAssert.default.equal(component.addZerosAndFormatValue('-3'), '-3.00'); _powerAssert.default.equal(component.addZerosAndFormatValue('$3'), '$3.00'); _powerAssert.default.equal(component.addZerosAndFormatValue('-$3'), '-$3.00'); _powerAssert.default.equal(component.addZerosAndFormatValue('$3.3'), '$3.30'); _powerAssert.default.equal(component.addZerosAndFormatValue('$3.33'), '$3.33'); }); }); it('Should set values with trailing zeros', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-US' }).then(function (component) { _powerAssert.default.equal(component.formatValue(null), null); _powerAssert.default.equal(component.formatValue('0'), '0.00'); _powerAssert.default.equal(component.formatValue('3'), '3.00'); _powerAssert.default.equal(component.formatValue('3.3'), '3.30'); _powerAssert.default.equal(component.formatValue('3.33'), '3.33'); }); }); it('Should format currency for USA locale', function () { /* eslint-disable max-statements */ return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-US' }).then(function (component) { _harness.default.testSetInput(component, null, '', ''); _harness.default.testSetInput(component, undefined, '', ''); _harness.default.testSetInput(component, {}, '', ''); _harness.default.testSetInput(component, [], '', ''); _harness.default.testSetInput(component, [''], '', ''); _harness.default.testSetInput(component, ['1'], 1, '$1.00'); _harness.default.testSetInput(component, ['$1.00'], 1, '$1.00'); _harness.default.testSetInput(component, 0, 0, '$0.00'); _harness.default.testSetInput(component, 1.00, 1, '$1.00'); _harness.default.testSetInput(component, -1.00, -1, '-$1.00'); _harness.default.testSetInput(component, 1, 1, '$1.00'); _harness.default.testSetInput(component, -1, -1, '-$1.00'); _harness.default.testSetInput(component, 1000, 1000, '$1,000.00'); _harness.default.testSetInput(component, -1000, -1000, '-$1,000.00'); _harness.default.testSetInput(component, 1000.01, 1000.01, '$1,000.01'); _harness.default.testSetInput(component, -1000.01, -1000.01, '-$1,000.01'); _harness.default.testSetInput(component, 1234567890.12, 1234567890.12, '$1,234,567,890.12'); _harness.default.testSetInput(component, -1234567890.12, -1234567890.12, '-$1,234,567,890.12'); _harness.default.testSetInput(component, 123456789.123456789, 123456789.12, '$123,456,789.12'); _harness.default.testSetInput(component, -123456789.123456789, -123456789.12, '-$123,456,789.12'); _harness.default.testSetInput(component, '0', 0, '$0.00'); _harness.default.testSetInput(component, '1.00', 1, '$1.00'); _harness.default.testSetInput(component, '-1.00', -1, '-$1.00'); _harness.default.testSetInput(component, '1', 1, '$1.00'); _harness.default.testSetInput(component, '-1', -1, '-$1.00'); _harness.default.testSetInput(component, '1000', 1000, '$1,000.00'); _harness.default.testSetInput(component, '-1000', -1000, '-$1,000.00'); _harness.default.testSetInput(component, '1000.01', 1000.01, '$1,000.01'); _harness.default.testSetInput(component, '-1000.01', -1000.01, '-$1,000.01'); _harness.default.testSetInput(component, '1234567890.12', 1234567890.12, '$1,234,567,890.12'); _harness.default.testSetInput(component, '-1234567890.12', -1234567890.12, '-$1,234,567,890.12'); _harness.default.testSetInput(component, '123456789.123456789', 123456789.12, '$123,456,789.12'); _harness.default.testSetInput(component, '-123456789.123456789', -123456789.12, '-$123,456,789.12'); _harness.default.testSetInput(component, '$0', 0, '$0.00'); _harness.default.testSetInput(component, '$_', 0, '$0.00'); _harness.default.testSetInput(component, '-$_', 0, '$0.00'); _harness.default.testSetInput(component, '$1.00', 1, '$1.00'); _harness.default.testSetInput(component, '-$1.00', -1, '-$1.00'); _harness.default.testSetInput(component, '$1', 1, '$1.00'); _harness.default.testSetInput(component, '-$1', -1, '-$1.00'); _harness.default.testSetInput(component, '$1000', 1000, '$1,000.00'); _harness.default.testSetInput(component, '-$1000', -1000, '-$1,000.00'); _harness.default.testSetInput(component, '$1000.01', 1000.01, '$1,000.01'); _harness.default.testSetInput(component, '-$1000.01', -1000.01, '-$1,000.01'); _harness.default.testSetInput(component, '$1234567890.12', 1234567890.12, '$1,234,567,890.12'); _harness.default.testSetInput(component, '-$1234567890.12', -1234567890.12, '-$1,234,567,890.12'); _harness.default.testSetInput(component, '$123456789.123456789', 123456789.12, '$123,456,789.12'); _harness.default.testSetInput(component, '-$123456789.123456789', -123456789.12, '-$123,456,789.12'); }); /* eslint-enable max-statements */ }); it('Should format currency for British locale', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'en-GB' }).then(function (component) { _harness.default.testSetInput(component, null, '', ''); _harness.default.testSetInput(component, 0, 0, 'US$0.00'); _harness.default.testSetInput(component, 1.00, 1, 'US$1.00'); _harness.default.testSetInput(component, -1.00, -1, '-US$1.00'); _harness.default.testSetInput(component, 1, 1, 'US$1.00'); _harness.default.testSetInput(component, -1, -1, '-US$1.00'); _harness.default.testSetInput(component, 1000, 1000, 'US$1,000.00'); _harness.default.testSetInput(component, -1000, -1000, '-US$1,000.00'); _harness.default.testSetInput(component, 1000.01, 1000.01, 'US$1,000.01'); _harness.default.testSetInput(component, -1000.01, -1000.01, '-US$1,000.01'); _harness.default.testSetInput(component, 1234567890.12, 1234567890.12, 'US$1,234,567,890.12'); _harness.default.testSetInput(component, -1234567890.12, -1234567890.12, '-US$1,234,567,890.12'); _harness.default.testSetInput(component, 123456789.123456789, 123456789.12, 'US$123,456,789.12'); _harness.default.testSetInput(component, -123456789.123456789, -123456789.12, '-US$123,456,789.12'); }); }); it('Should format currency for French locale', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'fr' }).then(function (component) { // The spaces in these tests are a weird unicode space so be careful duplicating the tests. _harness.default.testSetInput(component, null, '', ''); _harness.default.testSetInput(component, 0, 0, '0,00 $US'); _harness.default.testSetInput(component, 1.00, 1, '1,00 $US'); _harness.default.testSetInput(component, -1.00, -1, '-1,00 $US'); _harness.default.testSetInput(component, 1, 1, '1,00 $US'); _harness.default.testSetInput(component, -1, -1, '-1,00 $US'); _harness.default.testSetInput(component, 1000, 1000, '1000,00 $US'); _harness.default.testSetInput(component, -1000, -1000, '-1000,00 $US'); _harness.default.testSetInput(component, 1000.01, 1000.01, '1000,01 $US'); _harness.default.testSetInput(component, -1000.01, -1000.01, '-1000,01 $US'); _harness.default.testSetInput(component, 1234567890.12, 1234567890.12, '1234567890,12 $US'); _harness.default.testSetInput(component, -1234567890.12, -1234567890.12, '-1234567890,12 $US'); _harness.default.testSetInput(component, 1234567890.123456789, 1234567890.12, '1234567890,12 $US'); _harness.default.testSetInput(component, -1234567890.123456789, -1234567890.12, '-1234567890,12 $US'); }); }); it('Should format currency for German locale', function () { return _harness.default.testCreate(_Currency.default, _fixtures.comp1, { language: 'de' }).then(function (component) { _harness.default.testSetInput(component, null, '', ''); _harness.default.testSetInput(component, 0, 0, '0,00 $'); _harness.default.testSetInput(component, 1.00, 1.00, '1,00 $'); _harness.default.testSetInput(component, -1.00, -1.00, '-1,00 $'); _harness.default.testSetInput(component, 1, 1, '1,00 $'); _harness.default.testSetInput(component, -1, -1, '-1,00 $'); _harness.default.testSetInput(component, 1000, 1000, '1.000,00 $'); _harness.default.testSetInput(component, -1000, -1000, '-1.000,00 $'); _harness.default.testSetInput(component, 1000.01, 1000.01, '1.000,01 $'); _harness.default.testSetInput(component, -1000.01, -1000.01, '-1.000,01 $'); _harness.default.testSetInput(component, 1234567890.12, 1234567890.12, '1.234.567.890,12 $'); _harness.default.testSetInput(component, -1234567890.12, -1234567890.12, '-1.234.567.890,12 $'); _harness.default.testSetInput(component, 1234567890.123456789, 1234567890.12, '1.234.567.890,12 $'); _harness.default.testSetInput(component, -1234567890.123456789, -1234567890.12, '-1.234.567.890,12 $'); }); }); });