Skip to content

Commit

Permalink
Add date argument to generate & restructure tests
Browse files Browse the repository at this point in the history
  • Loading branch information
matusf committed Jul 5, 2020
1 parent 3ec65dd commit cfe0956
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 16 deletions.
11 changes: 9 additions & 2 deletions pay_by_square.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import lzma
import binascii
from datetime import datetime
from typing import Optional
from datetime import datetime, date


def generate(
*,
amount: float,
iban: str,
swift: str = '',
date: Optional[date] = None,
beneficiary_name: str = '',
currency: str = 'EUR',
variable_symbol: str = '',
Expand All @@ -19,8 +21,13 @@ def generate(
) -> str:
'''Generate pay-by-square code that can by used to create QR code for
banking apps
When date is not provided current date will be used.
'''

if date is None:
date = datetime.now()

# 1) create the basic data structure
data = '\t'.join(
[
Expand All @@ -29,7 +36,7 @@ def generate(
'1', # simple payment
f'{amount:.2f}',
currency,
datetime.now().strftime('%Y%m%d'),
date.strftime('%Y%m%d'),
variable_symbol,
constant_symbol,
specific_symbol,
Expand Down
45 changes: 31 additions & 14 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,48 +1,65 @@
from datetime import date
from unittest import TestCase, main

from pay_by_square import generate


class TestPayBySquare(TestCase):
def test(self):
def test_amount_iban(self):
self.assertEqual(
generate(amount=1, iban='SK7700000000000000000000'),
'00044000DULVORPA054O3Q3S5TOTRH7S1PGF5J19UGS6EJQA7JEIN75VVFUSNSV3'
'9T51EA4H07727VVURLU00',
generate(amount=1, iban='SK7700000000000000000000', date=date(2020, 7, 5)),
'000440007S3VT0DFSETNDU5J8KF4EI1MT7B3BBH3P91D830QDBA6IRPF97451V4U'
'11PHMI423IDK7VVU5P800',
)

def test_amount_iban_swift(self):
self.assertEqual(
generate(amount=1, iban='SK7700000000000000000000', swift='FIOZSKBAXXX'),
'0004Q000D6VLDPM892PSOAVJ4R1ATTVSV98NUI3DFIPR7D4QQ4KONF90F526KCRO'
'I8BLQ82MPPSR0USOHGD9NAC1K1N014FVVUMDPG00',
generate(
amount=1,
iban='SK7700000000000000000000',
swift='FIOZSKBAXXX',
date=date(2020, 7, 5),
),
'0004Q000DS03UHKLF59M2IK7FUCM3SBUK5FM62CCKLR4QOKAJSBPPL4ND4R66LSI'
'1K92GURM0FH5E3DASNBTNAKASV94PB5VVU1BRO00',
)

def test_amount_iban_symbols(self):
self.assertEqual(
generate(
amount=1,
iban='SK7700000000000000000000',
date=date(2020, 7, 5),
variable_symbol='11',
constant_symbol='22',
specific_symbol='33',
),
'0004G0008OV1L1JQP2PSOAVJ4R1ATTVSV98NUI3DFIPR7D7LM1EV7HET0A1P82ES'
'R1S31L45TSU1KEC8QMSRJDVVHRLVVVS3E5000',
'0004G000EIUCQ7TO82O7GRAEMT06773UPLKOEC76BV3NBBNP7HPVSSJHUNVFBD7G'
'6DAAMTDL4B8ND4D06QCNS7PHMPBVVVROGU000',
)

def test_amount_iban_symbols_beneficiary_name(self):
self.assertEqual(
generate(
amount=1,
iban='SK7700000000000000000000',
date=date(2020, 7, 5),
variable_symbol='11',
constant_symbol='22',
specific_symbol='33',
beneficiary_name='Foo',
),
'0004M0009KHOVQ8LKP6SS5PM8L1RE2O72SM9D7B0J1OEIB5IFNPSCAO1QQNHFMAC'
'KQB05H5SVO5TFHJB0A365357DHD40O3ORU1FVTIPFO00',
'0004M0006MISSBD0SBV1135OEDE05KA7IM2GBI0U0M5LHD5LIEP7D9CJO6T8GQDF'
'UKCL7TOEGN8TDOVAJ2GL85IOEA8OV3O1AQOFVU3JKS00',
)

def test_pass_all_arguments(self):
self.assertEqual(
generate(
amount=1,
iban='SK7700000000000000000000',
swift='FIOZSKBAXXX',
date=date(2020, 7, 5),
variable_symbol='11',
constant_symbol='22',
specific_symbol='33',
Expand All @@ -51,9 +68,9 @@ def test(self):
beneficiary_address_2='address 2',
note='money',
),
'0006Q000AEC7VBLGJROL8RIVGVK02C4MMLA7T6LKCVDOIJFK1QUJ4DS1J52UEIP5'
'IVSLPQ2MG18S424V3SE9403C9GLRN4QNH6EQV7T0G4M143O82OO87MLAL2K6MFO3'
'3T7ET83B3IM8AS7VVTIIR000',
'0006Q0006GO7VIPNP2PPLDV1MO04PTB6C4OSM4KU3JKSDNJLJ0GBAT9GTI9DD7MF'
'QKGMLI4RD7996S1K78MKT8S0F46HK5TF6A6GP881BBMM66JVFMBBSM9KQRM2TN2V'
'RABUV7KFD22BFFIVVTFKO000',
)


Expand Down

0 comments on commit cfe0956

Please sign in to comment.