def test_import(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(),'data.csv')
        args.accountname = None
        args.import_duplicates=False
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
2016-02-02,Thai Restaurant,-10,Food,Checking Account
2016-02-03,,10,Saving!,Savings
        """
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        Transactions = [
            self.getTr(datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.', -20, 'Buying pants', 'Cash'),
            self.getTr(datetime(year=2016, month=2, day=2).date(), 'Thai Restaurant', -10, 'Food', 'Checking Account'),
            self.getTr(datetime(year=2016, month=2, day=3).date(), '', 10, 'Saving!', 'Savings'),
        ]

        do_csvimport(args)
        self.reload()
        for tr in Transactions:
            print(json.dumps(tr, cls=ComplexEncoder))
            print(json.dumps(
                [tr2 for tr2 in self.client.budget.be_transactions if tr2.amount == tr.amount],
                cls=ComplexEncoder))
            self.assertTrue(self.client.budget.be_transactions.containsduplicate(tr))
Beispiel #2
0
    def test_import(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(), 'data.csv')
        args.accountname = None
        args.import_duplicates = False
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
2016-02-02,Thai Restaurant,-10,Food,Checking Account
2016-02-03,,10,Saving!,Savings
        """
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transactions = [
            self.getTr(datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.', -20, 'Buying pants', 'Cash'),
            self.getTr(datetime(year=2016, month=2, day=2).date(), 'Thai Restaurant', -10, 'Food', 'Checking Account'),
            self.getTr(datetime(year=2016, month=2, day=3).date(), '', 10, 'Saving!', 'Savings'),
        ]

        do_csvimport(args)
        self.reload()
        for transaction in transactions:
            self.assertIn(transaction, self.client.budget.be_transactions)
Beispiel #3
0
    def test_duplicateForced(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(), 'data.csv')
        args.accountname = None
        args.import_duplicates = True
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
"""
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transaction = self.getTr(
            datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.',
            -20, 'Buying pants', 'Cash')

        do_csvimport(args)
        self.reload()
        do_csvimport(args)
        self.reload()
        self.assertTrue(
            len([
                tr2 for tr2 in self.client.budget.be_transactions
                if transaction._hash() == tr2._hash()
            ]) == 2)
Beispiel #4
0
def test_import(client_w_accounts):
    client = client_w_accounts
    args = CsvImportArgs(os.path.join(gettempdir(), 'data.csv'),
                         valid_schema('example'),
                         import_duplicates=False)

    content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
2016-02-02,Thai Restaurant,-10,Food,Checking Account
2016-02-03,,10,Saving!,Savings
    """
    with open(args.csv_file, mode='w') as f:
        f.writelines(content)

    transactions = [
        get_transaction(client,
                        datetime(year=2016, month=2, day=1).date(),
                        'Super Pants Inc.', -20, 'Buying pants', 'Cash'),
        get_transaction(client,
                        datetime(year=2016, month=2, day=2).date(),
                        'Thai Restaurant', -10, 'Food', 'Checking Account'),
        get_transaction(client,
                        datetime(year=2016, month=2, day=3).date(), '', 10,
                        'Saving!', 'Savings'),
    ]

    verify_csvimport(args.schema, args.account_name)
    do_csvimport(args, client)
    for transaction in transactions:
        assert transaction.key2 in [
            tr.key2 for tr in client.budget.be_transactions
        ]
Beispiel #5
0
    def test_duplicate(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join('data', 'test.csv')
        args.accountname = None
        args.import_duplicates = False
        args.level = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Credit
"""
        try:
            os.makedirs(os.path.dirname(args.csvfile))
        except OSError as e:
            if e.errno != errno.EEXIST:
                raise

        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transaction=self.getTr(datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.', -20, 'Buying pants', 'Credit')

        for i in range(2):
            do_csvimport(args)
            self.reload()
            identical=[tr2 for tr2 in self.client.budget.be_transactions if transaction.hash() == tr2.hash()]
            print('Transactions with same hash: %s'%len(identical))
            self.assertTrue(len(identical) == 1)
Beispiel #6
0
    def test_duplicateForced(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(), 'data.csv')
        args.accountname = None
        args.import_duplicates = True
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
"""
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transaction = self.getTr(
            datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.',
            -20, 'Buying pants', 'Cash')

        self.client.budget.be_transactions.append(transaction)
        schema = verify_csvimport(args)
        delta = do_csvimport(args, schema, self.client)
        self.assertEqual(delta, 1)

        self.assertEqual(
            sum(1 for tr in self.client.budget.be_transactions
                if tr.key2 == transaction.key2), 2)
Beispiel #7
0
    def csvimport(cls):
        """Manually import a CSV into a nYNAB budget"""
        print('pynYNAB CSV import')

        args = cls.csvimport_parser.parse_args()
        verify_common_args(args)

        schema = verify_csvimport(args)
        client = clientfromargs(args)
        delta = do_csvimport(args, schema, client)
        client.push(expected_delta=delta)
    def test_duplicateForced(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(),'data.csv')
        args.accountname = None
        args.import_duplicates = True
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
"""
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transaction=self.getTr(datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.', -20, 'Buying pants', 'Cash')

        do_csvimport(args)
        self.reload()
        do_csvimport(args)
        self.reload()
        self.assertTrue(len([tr2 for tr2 in self.client.budget.be_transactions if transaction._hash() == tr2._hash()]) == 2)
Beispiel #9
0
    def test_duplicate(self):
        parser = configargparse.getArgumentParser('pynYNAB')
        args = parser.parse_known_args()[0]
        args.schema = 'example'
        args.csvfile = os.path.join(gettempdir(), 'data.csv')
        args.accountname = None
        args.import_duplicates = False
        args.logginglevel = 'debug'

        content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Credit
"""
        with open(args.csvfile, mode='w') as f:
            f.writelines(content)

        transaction = self.getTr(datetime(year=2016, month=2, day=1).date(), 'Super Pants Inc.', -20, 'Buying pants',
                                 'Credit')

        for i in range(2):
            do_csvimport(args)
            self.reload()
            nduplicates = self.client.budget.be_transactions.count(transaction)
            self.assertEqual(nduplicates, 1)
Beispiel #10
0
    def csvimport(cls):
        """Manually import a CSV into a nYNAB budget"""
        print('pynYNAB CSV import')

        args = cls.csvimport_parser.parse_args()
        verify_common_args(args)

        if not os.path.exists(args.csvfile):
            LOG.error('input CSV file does not exist')
            exit(-1)

        client = clientfromargs(args)
        delta = do_csvimport(args, client)
        client.push(expected_delta=delta)
Beispiel #11
0
def test_duplicate(client_w_account_credit):
    client = client_w_account_credit
    args = CsvImportArgs(os.path.join(gettempdir(), 'data.csv'),
                         valid_schema('example'),
                         None,
                         import_duplicates=False)

    content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Credit
"""
    with open(args.csv_file, mode='w') as f:
        f.writelines(content)

    transaction = get_transaction(client,
                                  datetime(year=2016, month=2,
                                           day=1).date(), 'Super Pants Inc.',
                                  -20, 'Buying pants', 'Credit')
    client.budgetClient.clear_changed_entities()
    client.budget.be_transactions.append(transaction)
    verify_csvimport(args.schema, args.account_name)
    delta = do_csvimport(args, client)
    assert delta == 0
Beispiel #12
0
def test_duplicateForced(client_w_account_cash):
    client = client_w_account_cash
    args = CsvImportArgs(os.path.join(gettempdir(), 'data.csv'),
                         valid_schema('example'), None, True)

    content = """Date,Payee,Amount,Memo,Account
2016-02-01,Super Pants Inc.,-20,Buying pants,Cash
"""
    with open(args.csv_file, mode='w') as f:
        f.writelines(content)

    transaction = get_transaction(client,
                                  datetime(year=2016, month=2,
                                           day=1).date(), 'Super Pants Inc.',
                                  -20, 'Buying pants', 'Cash')

    client.budget.be_transactions.append(transaction)
    verify_csvimport(args.schema, args.account_name)
    delta = do_csvimport(args, client)
    assert delta == 1

    assert sum(1 for tr in client.budget.be_transactions
               if tr.key2 == transaction.key2) == 2