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)
Пример #2
0
    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)
Пример #6
0
    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_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')
Пример #9
0
    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')
Пример #10
0
    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_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)