diff --git a/RoboFile.php b/RoboFile.php index 26d4ae3d10..23adc3325c 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -224,7 +224,7 @@ class RoboFile extends \Robo\Tasks { } public function testJavascript($xmlOutputFile = null) { - $command = './node_modules/.bin/mocha --require @babel/register tests/javascript/**/*.spec.js'; + $command = './node_modules/.bin/mocha --require tests/javascript/babel_register.js tests/javascript/**/*.spec.js'; if (!empty($xmlOutputFile)) { $command .= sprintf( diff --git a/assets/js/src/form_editor/store/map_form_data_after_loading.jsx b/assets/js/src/form_editor/store/map_form_data_after_loading.jsx index 45532df8b4..f2a4f4e9e8 100644 --- a/assets/js/src/form_editor/store/map_form_data_after_loading.jsx +++ b/assets/js/src/form_editor/store/map_form_data_after_loading.jsx @@ -1,11 +1,4 @@ -function asNum(num) { - const numI = parseInt(num, 10); - if (Number.isNaN(numI)) { - return undefined; - } - return numI; -} - +import asNum from './server_value_as_num'; export default function mapFormDataAfterLoading(data) { return { diff --git a/assets/js/src/form_editor/store/server_value_as_num.ts b/assets/js/src/form_editor/store/server_value_as_num.ts new file mode 100644 index 0000000000..bf8f38ef33 --- /dev/null +++ b/assets/js/src/form_editor/store/server_value_as_num.ts @@ -0,0 +1,10 @@ + +function asNum(num?: string): number | undefined { + const numI = parseInt(num, 10); + if (Number.isNaN(numI)) { + return undefined; + } + return numI; +} + +export default asNum; diff --git a/package.json b/package.json index 6b80589d27..ac25fc3d55 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "autoprefixer": "postcss assets/dist/css/*.css --use autoprefixer --no-map --replace", "scss": "node-sass assets/css/src/ --output assets/dist/css/ --output-style compact", "stylelint": "stylelint --fix", - "test": "mocha --require @babel/register tests/javascript/**/*.spec.js", + "test": "mocha --require tests/javascript/babel_register.js tests/javascript/**/*.spec.js", "check-types": "tsc --noEmit", "storybook": "start-storybook -s ./ -p 8083", "build-storybook": "build-storybook" diff --git a/tests/javascript/babel_register.js b/tests/javascript/babel_register.js new file mode 100644 index 0000000000..7610e62842 --- /dev/null +++ b/tests/javascript/babel_register.js @@ -0,0 +1 @@ +require('@babel/register')({ extensions: ['.js', '.jsx', '.ts', '.tsx'] }); diff --git a/tests/javascript/form_editor/store/server_value_as_num.spec.ts b/tests/javascript/form_editor/store/server_value_as_num.spec.ts new file mode 100644 index 0000000000..d84691d490 --- /dev/null +++ b/tests/javascript/form_editor/store/server_value_as_num.spec.ts @@ -0,0 +1,19 @@ +import { expect } from 'chai'; + +import asNum from '../../../../assets/js/src/form_editor/store/server_value_as_num'; + +describe.only('Server value as num', () => { + it('Converts string to number', () => { + expect(asNum('4')).to.equal(4); + expect(asNum('0')).to.equal(0); + expect(asNum('09')).to.equal(9); + expect(asNum('159')).to.equal(159); + expect(asNum('-159')).to.equal(-159); + }); + + it('Converts returns undefined', () => { + expect(asNum('xxx')).to.be.undefined; + expect(asNum(null)).to.be.undefined; + expect(asNum(undefined)).to.be.undefined; + }); +});