nrb-qr-parser
Version:
Reads QR Code string from Malawi Registration National Bureau Identification document and converts it to a json format
61 lines (60 loc) • 2.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const parser_1 = require("./parser");
test('Able to detect supported NRB IDS', () => {
expect((0, parser_1.parseNrbQr)('01~')).toBeDefined();
expect((0, parser_1.parseNrbQr)('03~')).toBeDefined();
expect((0, parser_1.parseNrbQr)('04~')).toBeDefined();
expect((0, parser_1.parseNrbQr)('05~')).toBeDefined();
expect((0, parser_1.parseNrbQr)('10~')).toBeDefined();
});
test('Does not detect non NRB QR codes', () => {
expect((0, parser_1.parseNrbQr)('10000~')).toBeUndefined();
expect((0, parser_1.parseNrbQr)('myname~vbx12341~2jds')).toBeUndefined();
expect((0, parser_1.parseNrbQr)('01_andrewmfune@gmail.com~')).toBeUndefined();
});
test('Able to parse all Qr code content', () => {
const nationalIDqr = '03~i<mwi0M3Y181AJ8<<<<<<<<<<<<<<<~6903158m2503158mwi<<<<<<<<<<<0~Dude<<Lambda<Lambda<<<<<<<<<<<<<~Dude~ M3Y181AJ~Lambda~Lambda~mALE~15 mAR 1989~23 jUN 2017~';
expect((0, parser_1.parseNrbQr)(nationalIDqr)).toMatchObject({
machine_readable_zone: "i<mwi0M3Y181AJ8<<<<<<<<<<<<<<<",
birthdate: '1989-03-15',
given_name: 'Lambda',
family_name: 'Dude',
identifier: 'M3Y181AJ',
gender: 'Male',
registration_date: '2017-06-23'
});
const otherNationalIDQr = '03~I<MWIW84WA4V2<3<<<<<<<<<<<<<<<9708262M239261MWI<<<<<<<<<<<6~JIPSON<<HOUSE<<<<<<<<<<<<<<<<<~JIPSON~W84WA4V2~HOUSEMale~26 Aug 1997~02 Sep 2017';
expect((0, parser_1.parseNrbQr)(otherNationalIDQr)).toMatchObject({
machine_readable_zone: "I<MWIW84WA4V2<3<<<<<<<<<<<<<<<9708262M239261MWI<<<<<<<<<<<6",
family_name: 'JIPSON',
identifier: 'W84WA4V2',
given_name: 'HOUSE',
gender: 'Male',
birthdate: '1997-08-26',
registration_date: '2017-09-02'
});
const birthQr = '04~CK/00003106/2022-00019280792~Chimwemwe Shire~15-Dec-2016~M~4P4K3CXG~Dalitso Cecilia Itaye~Malawian~Mcnell Shire~Malawian~06-May-2022';
expect((0, parser_1.parseNrbQr)(birthQr)).toMatchObject({
identifier: '4P4K3CXG',
given_name: 'Chimwemwe',
family_name: 'Shire',
birthdate: '2016-12-15',
gender: 'Male'
});
const deathQr = '05~-KA/0000634/2022-00000274983~Clement Weddington Mbobe~10-Oct-1989~M~Malawian~04-Nov-2022~Karonga District Hospital, Karonga~Rozaline Sikanda~Benard Mbobe~10-Nov-2022';
expect((0, parser_1.parseNrbQr)(deathQr)).toMatchObject({
given_name: 'Clement',
family_name: 'Mbobe',
birthdate: '1989-10-10',
gender: 'Male'
});
const receiptQr = '01~lilongwe city~23 jUN 2017~area 8~area 8~d230617mw1363p0084701~Dude~Lambda~Lambda~male~15 mAR 1989~';
expect((0, parser_1.parseNrbQr)(receiptQr)).toMatchObject({
birthdate: '1989-03-15',
given_name: 'Lambda',
family_name: 'Dude',
gender: 'Male',
registration_date: '2017-06-23'
});
});