diff --git a/partner-bnisp.js b/partner-bnisp.js index 6443727..a16839c 100644 --- a/partner-bnisp.js +++ b/partner-bnisp.js @@ -46,9 +46,14 @@ function topupRequest(task) { _hitTopup(task); } +function splitRemoteProduct(remoteProduct) { + return remoteProduct.replace(/^\s+|\s+$/gm,'').split(/[\/\W]+/); +} + function _hitTopup(task, isCheckStatus) { - const remoteProduct = task.remoteProduct.split('/'); + const remoteProduct = splitRemoteProduct(task.remoteProduct); + if (remoteProduct.length < 4) { callbackReport(task.requestId, '40', 'INTERNAL_MSG: Invalid remoteProduct', task) return; @@ -242,3 +247,4 @@ exports.createUrlPath = createUrlPath; exports.parseResponseBody = parseResponseBody; exports.responseDataProcessor = responseDataProcessor; exports.topupRequest = topupRequest; +exports.splitRemoteProduct = splitRemoteProduct; diff --git a/test.js b/test.js index 3826639..cdcb41d 100644 --- a/test.js +++ b/test.js @@ -54,4 +54,32 @@ describe("#partner", function() { processed.balance.should.equal(94950); }) }) + + describe('#splitRemoteProduct', function() { + it ('should return correctly using space as separator', function() { + const remoteProduct = 'PULSA THREE5000 0 0'; + partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA'); + partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000'); + partner.splitRemoteProduct(remoteProduct)[2].should.equal('0'); + partner.splitRemoteProduct(remoteProduct)[3].should.equal('0'); + }) + + it ('should return correctly using comma as separator', function() { + const remoteProduct = 'PULSA,THREE5000,0,0'; + partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA'); + partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000'); + partner.splitRemoteProduct(remoteProduct)[2].should.equal('0'); + partner.splitRemoteProduct(remoteProduct)[3].should.equal('0'); + }) + + it ('should return correctly using slash as separator', function() { + const remoteProduct = 'PULSA/THREE5000/0/0'; + partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA'); + partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000'); + partner.splitRemoteProduct(remoteProduct)[2].should.equal('0'); + partner.splitRemoteProduct(remoteProduct)[3].should.equal('0'); + }) + + + }) })