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))
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)
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)
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 ]
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)
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)
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)
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)
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)
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
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