def test_parse(self): lines = [ '02,031001234,122099999,1,040620,2359,GBP,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,3/', '98,72000000,1,5/' ] parser = GroupParser(IteratorHelper(lines)) group = parser.parse() header = group.header self.assertEqual(header.ultimate_receiver_id, '031001234') self.assertEqual(header.originator_id, '122099999') self.assertEqual(header.group_status, GroupStatus.update) self.assertEqual(header.as_of_date, datetime.date(year=2004, month=6, day=20)) self.assertEqual(header.as_of_time, datetime.time(hour=23, minute=59)) self.assertEqual(header.currency, 'GBP') self.assertEqual(header.as_of_date_modifier, AsOfDateModifier.final_previous_day) trailer = group.trailer self.assertEqual(trailer.group_control_total, 72000000) self.assertEqual(trailer.number_of_accounts, 1) self.assertEqual(trailer.number_of_records, 5) self.assertEqual(len(group.children), 1)
def test_ignore_integrity_checks(self): """ Checks that if IGNORE_INTEGRITY_CHECKS is set, integrity checks are not performed. """ lines = [ '02,031001234,122099999,1,040620,2359,GBP,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,3/', '98,72000001,2,6/' ] parser = GroupParser(IteratorHelper(lines), check_integrity=False) group = parser.parse() self.assertTrue(isinstance(group, Group))
def test_fails_without_trailer(self): lines = [ '02,031001234,122099999,1,040620,2359,,2/', ] parser = GroupParser(IteratorHelper(lines)) self.assertRaises(ParsingException, parser.parse)
def test_fails_if_no_accounts_found(self): lines = [ '02,031001234,122099999,1,040620,2359,,2/', '98,11800000,0,2/' ] parser = GroupParser(IteratorHelper(lines)) self.assertRaises(ParsingException, parser.parse)
def test_multiple_accounts(self): lines = [ '02,031001234,122099999,1,040620,2359,,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,3/', '03,0975312469,GBP,010,100,,/', '49,100,2/', '98,72000100,2,7/' ] parser = GroupParser(IteratorHelper(lines)) group = parser.parse() trailer = group.trailer self.assertEqual(trailer.group_control_total, 72000100) self.assertEqual(trailer.number_of_accounts, 2) self.assertEqual(trailer.number_of_records, 7) self.assertEqual(len(group.children), 2)
def test_default_currency(self): """ If currency field is blank in group header => default to USD """ lines = [ '02,031001234,122099999,1,040620,2359,,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,3/', '98,72000000,1,5/' ] parser = GroupParser(IteratorHelper(lines)) group = parser.parse() header = group.header self.assertEqual(header.currency, 'USD')
def test_fails_integrity_on_group_control_total(self): """ Group Control Total == 72000001 when it should be 72000000. """ lines = [ '02,031001234,122099999,1,040620,2359,GBP,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,3/', '98,72000001,1,5/' ] parser = GroupParser(IteratorHelper(lines)) self.assertRaises(IntegrityException, parser.parse)
def test_fails_integrity_on_numbers_of_accounts(self): """ Number of accounts == 4 when it should be 3. """ lines = [ '02,031001234,122099999,1,040620,2359,GBP,2/', '03,0975312468,GBP,010,500000,,,190,70000000,4,0/', '16,165,1500000,1,DD1620,, DEALER PAYMENTS', '49,72000000,4/', '98,72000000,1,5/' ] parser = GroupParser(IteratorHelper(lines)) self.assertRaises(IntegrityException, parser.parse)