test_xltunai.py 8.05 KB
import xltunai

def test_getOperatorFromProduct():
    assert xltunai.getOperatorFromProduct('XL5') == 'XL'
    assert xltunai.getOperatorFromProduct('XL10') == 'XL'
    assert xltunai.getOperatorFromProduct('XL25') == 'XL'
    assert xltunai.getOperatorFromProduct('XL50') == 'XL'
    assert xltunai.getOperatorFromProduct('XL100') == 'XL'
    
    assert xltunai.getOperatorFromProduct('XA5') == 'XA'
    assert xltunai.getOperatorFromProduct('XA10') == 'XA'
    assert xltunai.getOperatorFromProduct('XA25') == 'XA'
    assert xltunai.getOperatorFromProduct('XA50') == 'XA'
    assert xltunai.getOperatorFromProduct('XA100') == 'XA'
    
    assert xltunai.getOperatorFromProduct('XL100H') == 'XL'

def test_getNominalFromProduct():
    assert xltunai.getNominalFromProduct('XL5') == 5000
    assert xltunai.getNominalFromProduct('XL10') == 10000
    assert xltunai.getNominalFromProduct('XL25') == 25000
    assert xltunai.getNominalFromProduct('XL50') == 50000
    assert xltunai.getNominalFromProduct('XL100') == 100000
    
    assert xltunai.getNominalFromProduct('XA5') == 5000
    assert xltunai.getNominalFromProduct('XA10') == 10000
    assert xltunai.getNominalFromProduct('XA25') == 25000
    assert xltunai.getNominalFromProduct('XA50') == 50000
    assert xltunai.getNominalFromProduct('XA100') == 100000
    
    assert xltunai.getNominalFromProduct('XL100H') == 100000

def test_getDenomCodeFromProduct():
    assert xltunai.getDenomCodeFromProduct('XL5') == 1
    assert xltunai.getDenomCodeFromProduct('XL10') == 2
    assert xltunai.getDenomCodeFromProduct('XL25') == 3
    assert xltunai.getDenomCodeFromProduct('XL50') == 4
    assert xltunai.getDenomCodeFromProduct('XL100') == 5
    assert xltunai.getDenomCodeFromProduct('XL200') == 6
    
    assert xltunai.getDenomCodeFromProduct('XL300') == None

def test_getCostFromProduct():
    assert xltunai.getCostFromProduct('XL5') == 5500
    assert xltunai.getCostFromProduct('XL10') == 10500
    assert xltunai.getCostFromProduct('XL25') == 25000
    assert xltunai.getCostFromProduct('XL50') == 50000
    assert xltunai.getCostFromProduct('XL100') == 100000
    assert xltunai.getCostFromProduct('XL200') == 200000
    
    assert xltunai.getCostFromProduct('XL300') == 0

def test_getSNFromMessage():
    assert xltunai.getSNFromMessage('Nomor 6287884153131 telah berhasil diisi pulsa sebesar Rp.5000. Nikmati transaksi XL Tunai lainnya. Ref ID :75614092695337') == '75614092695337'
    assert xltunai.getSNFromMessage('Nomor 6287884153131 telah berhasil diisi pulsa sebesar Rp.5000. Nikmati transaksi XL Tunai lainnya. SN ID :75614092695337') == ''
    assert xltunai.getSNFromMessage('Nomor 6287889517766 telah berhasil diisi pulsa sebesar Rp 10000.Sisa Saldo Rp 3004500. Ref No 43280489064186') == '43280489064186'
    
def test_toInternationalNumber():
    assert xltunai.toInternationalNumber('081808180818') == '6281808180818'
    assert xltunai.toInternationalNumber('6281808180818') == '6281808180818'
    assert xltunai.toInternationalNumber('4114') == '4114'
    
def test_getDestinationFromMessage():
    assert xltunai.getDestinationFromMessage('Nomor 6287884153131 telah berhasil diisi pulsa sebesar Rp.5000. Nikmati transaksi XL Tunai lainnya. Ref ID :75614092695337') == '6287884153131'

def test_getNominalFromMessage():    
    assert xltunai.getNominalFromMessage('Nomor 6287770722609 telah berhasil diisi pulsa sebesar 5000. Sisa Saldo Rp 1949500. Ref No 41040432037489') == '5000'
    assert xltunai.getNominalFromMessage('Bla bla') == ''
    
def test_getBalanceFromMessage():
    assert xltunai.getBalanceFromMessage('Nomor 6287889517766 telah berhasil diisi pulsa sebesar Rp 10000.Sisa Saldo Rp 3004500. Ref No 43280489064186') == 3004500
    
def test_getBalanceFromUSSDResponse():
    message = """USSD response message:  Saldo Rp134500
Isi Pulsa 5000, Pilih menu no.2
1 Belanja di toko
2 Isi Pulsa
3 Pembayaran
4 Belanja Online
5 Kirim Uang
6 Tarik Uang
7 Pengaturan
8 Info"""
    assert xltunai.getBalanceFromUSSDResponse(message) == 134500

def test_getTopupUSSDCommand():
    assert xltunai.getTopupUSSDCommand('081808180818', 'XL2', '1234') == None
    assert xltunai.getTopupUSSDCommand('081808180818', 'XL5', '1234') == '*123*120*2*2*081808180818*1*1234#'
    assert xltunai.getTopupUSSDCommand('6281808180818', 'XL5', '1234') == '*123*120*2*2*6281808180818*1*1234#'
    assert xltunai.getTopupUSSDCommand('081808180818', 'XL50', '1234') == '*123*120*2*2*081808180818*4*1234#'
    
def test_valid_sender():
    assert xltunai.isValidSender('120') == True
    assert xltunai.isValidSender('121') == False
    
def test_getResponseCodeByMessage():
    assert xltunai.getResponseCodeByMessage('Nomor 6287884153131 telah berhasil diisi pulsa sebesar Rp.5000. Nikmati transaksi XL Tunai lainnya. Ref ID :75614092695337') == '00'
    assert xltunai.getResponseCodeByMessage('Bla bla bla') == '68'
        
def test_getResponseCodeByUSSDResponse():
    assert xltunai.getResponseCodeByUSSDResponse('Mohon maaf, nomor yang Anda masukkan tidak valid') == '14'
    assert xltunai.getResponseCodeByUSSDResponse('Bla bla bla') == '68'

def test_getMSISDNFromSIMCardInfo():
    assert xltunai.getMSISDNFromSIMCardInfo('Nomor 6287880852347 adalah nomor dengan POC JK0    dengan ICCID 8962116820756544479') == '6287880852347'
    assert xltunai.getMSISDNFromSIMCardInfo('bla bla bla') == ''
    
def test_getIMSIFromSIMCardInfo():
    assert xltunai.getIMSIFromSIMCardInfo('Nomor 6287880852347 adalah nomor dengan POC JK0    dengan ICCID 8962116820756544479') == '8962116820756544479'
    assert xltunai.getIMSIFromSIMCardInfo('bla bla bla') == ''

def test_getPulsaFromUssdResponseMessage():
    assert xltunai.getPulsaFromUssdResponseMessage('Pulsa 41875 s/d 16Sep15. Mendadak DISKON 1 JUTA pelanggan pertama!') == 41875
    assert xltunai.getPulsaFromUssdResponseMessage('''Pulsa 41875 s/d 16Sep15. Mendadak DISKON 1 JUTA pelanggan pertama!
1 Mau
2 Info 4G
3 Internet
4 Pkt Nelp&SMS
5 Pkt Seru
6 mPulsa
7 60Mazda2''') == 41875
    assert xltunai.getPulsaFromUssdResponseMessage('') == None
    assert xltunai.getPulsaFromUssdResponseMessage('Pulsa habis s/d') == None

def test_getPulsaFromUssdResponseMessage():
    assert xltunai.getMasaAktifFromUssdResponseMessage('Pulsa 41875 s/d 16Sep15. Mendadak DISKON 1 JUTA pelanggan pertama!') == '2015-09-16'
    assert xltunai.getMasaAktifFromUssdResponseMessage('Pulsa 53000 s.d 10Sep15. Pkt TalkMania-XTRA 250Mnt, Rp3375!') == '2015-09-10'
    assert xltunai.getMasaAktifFromUssdResponseMessage('Pulsa 41875 s/d. Mendadak DISKON 1 JUTA pelanggan pertama!') == None


def test_getLastSNFromMessage():
    assert xltunai.getLastSNFromHistoryMessage('Transaksi Terakhir : 20063778248257/5500/12-02-2016 14:37:08/M201312021528418273770285/P201511211752675316198716/RELOAD XL 5000') == '20063778248257'
    assert xltunai.getLastSNFromHistoryMessage('Transaksi Terakhir :\n20063778248257/5500/12-02-2016 14:37:08/M201312021528418273770285/P201511211752675316198716/RELOAD XL 5000') == '20063778248257'

def test_getSNFromReceiveTransferMessage():
    assert xltunai.getSNFromReceiveTransferMessage('Anda terima uang XLTunai Rp2500000  dr 6287886957792 DIDIT ARIYANTO  pada 19/02/2016 16:14:32.Cek saldo di *123*120#.RefID 49498359729433. Info hub 817') == '49498359729433'

def test_getSNFromCashInMessage():
    assert xltunai.getSNFromCashInMessage('Terimakasih, transaksi CASH IN ke akun 6287886957792 berhasil. Jumlah transaksi Rp 5000000, biaya 0. Saldo anda saat ini 5000000 . Ref ID: 96346333194106') == '96346333194106'

def test_getSNFromSentTransferMessage():
    assert xltunai.getSNFromSentTransferMessage('Kirim uang ke 6287886957795 an DIDIT ARIYANTO   sebesar Rp 580000 berhasil pada 20/02/2016 21:48:54.Ref id 79811319924606. Info hub 817') == '79811319924606'

def test_getLastTrxTypeFromMessage():
    assert xltunai.getLastTrxTypeFromMessage('Transaksi Terakhir :\n39535056518697/750000/22-02-2016 08:36:59/P201602181759182040246743/P201602181759182039246781/P2P TRANSFER') == 'P2P TRANSFER'
    assert xltunai.getLastTrxTypeFromMessage('Transaksi Terakhir :\n99345514064378/5500/21-02-2016 15:34:58/M201312021528418273770285/P201511211752675316198716/RELOAD XL 5000') == 'RELOAD XL 5000'