UNPKG

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
"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' }); });