From 2a06244fd61f62e5055ca868d4b79484bc400c43 Mon Sep 17 00:00:00 2001 From: Juan Date: Tue, 27 Feb 2018 20:28:07 +0100 Subject: [PATCH] Create client E2E fixed, tests for validateDni --- .../client-module/01_create_client.spec.js | 4 +- .../validations/specs/validateDni.spec.js | 86 +++++++++++++++++++ .../common/validations/validateDni.js | 9 +- 3 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 services/loopback/common/validations/specs/validateDni.spec.js diff --git a/e2e/paths/client-module/01_create_client.spec.js b/e2e/paths/client-module/01_create_client.spec.js index d12ca1b15f..7192ff65cf 100644 --- a/e2e/paths/client-module/01_create_client.spec.js +++ b/e2e/paths/client-module/01_create_client.spec.js @@ -58,7 +58,7 @@ describe('create client path', () => { it('should receive an error when clicking the create button having all the form fields empty but Tax Number', () => { return nightmare .clearInput(selectors.createClientView.name) - .type(selectors.createClientView.taxNumber, 'AVG tax') + .type(selectors.createClientView.taxNumber, '16195279J') .click(selectors.createClientView.createButton) .waitForSnackbar() .then(result => { @@ -127,7 +127,7 @@ describe('create client path', () => { .wait(selectors.createClientView.email) .clearInput(selectors.createClientView.email) .type(selectors.createClientView.name, 'Carol Danvers') - .type(selectors.createClientView.taxNumber, 'Avengers Tax Number') + .type(selectors.createClientView.taxNumber, '16195279J') .type(selectors.createClientView.socialName, 'AVG tax') .type(selectors.createClientView.userName, 'CaptainMarvel') .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') diff --git a/services/loopback/common/validations/specs/validateDni.spec.js b/services/loopback/common/validations/specs/validateDni.spec.js new file mode 100644 index 0000000000..45f8c40331 --- /dev/null +++ b/services/loopback/common/validations/specs/validateDni.spec.js @@ -0,0 +1,86 @@ +const validateDni = require('../validateDni'); + +fdescribe('DNI validation', () => { + it('should return false for invented DNI', async () => { + let isValid = validateDni('Pepinillos'); + expect(isValid).toBeFalsy(); + }); + + // Spanish + + it('should return true for valid spanish DNI', async () => { + let isValid = validateDni('20849756A'); + expect(isValid).toBeTruthy(); + }); + + it('should return true for spanish DNI with exceeded digits', async () => { + let isValid = validateDni('208497563239A'); + expect(isValid).toBeFalsy(); + }); + + it('should return false for spanish DNI with invalid letter', async () => { + let isValid = validateDni('20243746E'); + expect(isValid).toBeFalsy(); + }); + + it('should return true for valid spanish CIF', async () => { + let isValid = validateDni('B97367486'); + expect(isValid).toBeTruthy(); + }); + + it('should return false for spanish CIF with invalid letter', async () => { + let isValid = validateDni('A97527786'); + expect(isValid).toBeFalsy(); + }); + + // French + + it('should return true for valid french DNI', async () => { + let isValid = validateDni('FR1B123456789'); + expect(isValid).toBeTruthy(); + }); + + it('should return true for french DNI with exceeded digits', async () => { + let isValid = validateDni('FR1B12345678910'); + expect(isValid).toBeFalsy(); + }); + + it('should return true for french DNI with bad syntax', async () => { + let isValid = validateDni('FR1B12345678A'); + expect(isValid).toBeFalsy(); + }); + + // Italian + + it('should return true for valid italian DNI', async () => { + let isValid = validateDni('IT12345678911'); + expect(isValid).toBeTruthy(); + }); + + it('should return true for italian DNI with exceeded digits', async () => { + let isValid = validateDni('IT123456789112'); + expect(isValid).toBeFalsy(); + }); + + it('should return true for italian DNI with bad syntax', async () => { + let isValid = validateDni('IT1234567891A'); + expect(isValid).toBeFalsy(); + }); + + // Portuguese + + it('should return true for valid portuguese DNI', async () => { + let isValid = validateDni('PT123456789'); + expect(isValid).toBeTruthy(); + }); + + it('should return true for portuguese DNI with exceeded digits', async () => { + let isValid = validateDni('PT12345678910'); + expect(isValid).toBeFalsy(); + }); + + it('should return true for portuguese DNI with bad syntax', async () => { + let isValid = validateDni('PT12345678A'); + expect(isValid).toBeFalsy(); + }); +}); diff --git a/services/loopback/common/validations/validateDni.js b/services/loopback/common/validations/validateDni.js index 8a313c2787..c30890c6e0 100644 --- a/services/loopback/common/validations/validateDni.js +++ b/services/loopback/common/validations/validateDni.js @@ -46,22 +46,21 @@ module.exports = fiWithCountry => { let index = 'XYZ'.indexOf(fi.charAt(0)); let nif = index == -1 ? fi : index.toString() + fi.substring(1); - let number = parseInt(nif.substring(0, 8)); - let rest = number % 23; + let rest = parseInt(nif.substring(0, 8)) % 23; computedDigit = 'TRWAGMYFPDXBNJZSQVHLCKE'.charAt(rest); } return computedDigit == lastDigit; } }, - pt: { - regExp: /^\d{9}$/ - }, fr: { regExp: /^[A-Z0-9]{2}\d{9}$/ }, it: { regExp: /^\d{11}$/ + }, + pt: { + regExp: /^\d{9}$/ } };