/* eslint-disable no-console */ /* global describe it */ const should = require('should'); const modems = require('../lib/modems'); describe('#modems', () => { describe('#enabledModems', () => { it('should return correctly', () => { const test1 = modems.enabledModems([ { name: 'SENDER-AS13', disabled: false, outgoing: true, imsi: null, prefix: [], }, ]); test1.should.ok(); }); }); describe('#prefixes', () => { it('should return correctly', () => { const config = [ { name: 'XL1', outgoing: true, prefix: ['0818', '081'], }, { name: 'TSEL1', outgoing: true, prefix: ['0812', '0811'], }, { name: 'TSEL2', outgoing: true, prefix: ['0812', '0811'], }, { name: 'ISAT1', outgoing: true, prefix: ['0815', '0816'], }, ]; const prefixes = modems.prefixes(config); prefixes[0].prefix.should.equal('62811'); prefixes[1].prefix.should.equal('62812'); prefixes[2].prefix.should.equal('62815'); prefixes[3].prefix.should.equal('62816'); prefixes[4].prefix.should.equal('62818'); prefixes[5].prefix.should.equal('6281'); prefixes[0].modems[0].should.equal('TSEL1'); prefixes[0].modems[1].should.equal('TSEL2'); prefixes[1].modems[0].should.equal('TSEL1'); prefixes[1].modems[1].should.equal('TSEL2'); prefixes[2].modems[0].should.equal('ISAT1'); prefixes[3].modems[0].should.equal('ISAT1'); prefixes[4].modems[0].should.equal('XL1'); prefixes[5].modems[0].should.equal('XL1'); }); }); describe('#findPrefixForNumber', () => { it('should return correct prefix', () => { const config = [ { name: 'XL1', outgoing: true, prefix: ['0818', '081'], }, { name: 'TSEL1', outgoing: true, prefix: ['0812', '0811'], }, { name: 'TSEL2', outgoing: true, prefix: ['0812', '0811'], }, { name: 'ISAT1', outgoing: true, prefix: ['0815', '0816'], }, { name: 'FREE1', outgoing: true, prefix: [], }, { name: 'FREE2', outgoing: true, prefix: [], }, ]; const prefixes = modems.prefixes(config); modems.findPrefixForNumber('628188188', prefixes).prefix.should.equal('62818'); modems.findPrefixForNumber('08188188', prefixes).prefix.should.equal('62818'); modems.findPrefixForNumber('62812812', prefixes).prefix.should.equal('62812'); modems.findPrefixForNumber('62810810', prefixes).prefix.should.equal('6281'); should.not.exists(modems.findPrefixForNumber('6221212121', prefixes)); }); }); describe('#randomModemByPrefix', () => { const config = [ { name: 'XL1', outgoing: true, prefix: ['0818', '081'], }, { name: 'TSEL1', outgoing: true, prefix: ['0812', '0811'], }, { name: 'TSEL2', outgoing: true, prefix: ['0812', '0811'], }, { name: 'ISAT1', outgoing: true, prefix: ['0815', '0816'], }, { name: 'ISAT2', outgoing: false, prefix: ['0815', '0816'], }, { name: 'FREE1', outgoing: true, prefix: [], }, { name: 'FREE2', outgoing: true, prefix: [], }, ]; const loopCount = 100; it('should return correctly for XL', () => { for (let i = 0; i < loopCount; i += 1) { modems.randomModemByPrefix('6281881818', config).name.should.equal('XL1'); } }); it('should return correctly for TSEL', () => { for (let i = 0; i < loopCount; i += 1) { modems.randomModemByPrefix('62812812', config).name.should.equalOneOf('TSEL1', 'TSEL2'); } }); it('should return correctly for INDOSAT', () => { for (let i = 0; i < loopCount; i += 1) { modems.randomModemByPrefix('62815815', config).name.should.equal('ISAT1'); } }); it('should return correctly for UNKNOWN PREFIX', () => { for (let i = 0; i < loopCount; i += 1) { modems.randomModemByPrefix('628888888', config).name.should.equalOneOf('FREE1', 'FREE2'); } }); it('should handle UNKNOWN PREFIX without free modem', () => { // eslint-disable-next-line no-shadow const config = [ { name: 'XL1', outgoing: true, prefix: ['0818', '081'], }, { name: 'FREE1', outgoing: false, prefix: [], }, { name: 'FREE2', outgoing: false, prefix: [], }, ]; should.not.exists(modems.randomModemByPrefix('628888888', config)); }); }); });