def testRunEnterDaysLessThanOne(self): schedulefiledata = FileTester.read_file( FileTester.test_enter_lessthan1 ) tempschedulefile = FileTester.write_to_temp_file( FileTester.test_enter_lessthan1, schedulefiledata ) schedulefile = ScheduleFile(tempschedulefile) templedgerfile = FileTester.create_temp_file('') ledgerfile = LedgerFile(templedgerfile) scheduler = Scheduler(ledgerfile, schedulefile) scheduler.run() ledgerfile.write_file() schedulefile.write_file() schedulefile_actual = FileTester.read_file(tempschedulefile) schedulefile_expected = FileTester.read_file( FileTester.test_enter_lessthan1 ) os.remove(templedgerfile) os.remove(tempschedulefile) self.assertEqual( schedulefile_expected, schedulefile_actual )
def test_parsed_file_unchanged_via_write(self): """file output after parsing should be identical to input""" expected = FileTester.read_file(FileTester.testfile) tempfile = FileTester.copy_to_temp_file(FileTester.testfile) ledgerfile = LedgerFile(tempfile) ledgerfile.write_file() actual = FileTester.read_file(tempfile) remove(tempfile) self.assertEqual(expected, actual)
def test_already_sorted_file_unchanged(self): """file output after sorting is identical to sorted input""" expected = FileTester.read_file(FileTester.sortedfile) tempfile = FileTester.copy_to_temp_file(FileTester.sortedfile) ledgerfile = LedgerFile(tempfile) ledgerfile.sort() ledgerfile.write_file() actual = FileTester.read_file(tempfile) remove(tempfile) self.assertEqual(expected, actual)
def test_sorting(self): """test sorting""" expected = FileTester.read_file(FileTester.alpha_sortedfile) tempfile = FileTester.copy_to_temp_file( FileTester.alpha_unsortedfile ) ledgerfile = LedgerFile(tempfile) ledgerfile.sort() ledgerfile.write_file() actual = FileTester.read_file(tempfile) remove(tempfile) self.assertEqual(expected, actual)
def process_file(self): if self.args.next_scheduled_date: if not self.args.schedule_file: print('error: -S/--schedule-file is required') return 8 schedule_file = ScheduleFile(self.args.schedule_file) print(schedule_file.next_scheduled_date()) return 0 if not self.args.file: print('error: -f/--file is required') return 16 try: ledgerfile = LedgerFile(self.args.file, self.args.reconcile) except LdgReconcilerMoreThanOneMatchingAccount as e: print('Reconcile error. More than one matching account:') for account in e.message: print(' ' + account) return 2 except LdgReconcilerMultipleStatuses as e: print(str(e)) return 4 if self.args.schedule_file: schedule_file = ScheduleFile(self.args.schedule_file) scheduler = Scheduler(ledgerfile, schedule_file) scheduler.run() schedule_file.write_file() ledgerfile.write_file() if self.args.sort: ledgerfile.sort() ledgerfile.write_file() if self.args.reconcile: if ledgerfile.rec_account_matches: # pragma: no cover reconciler = Reconciler(ledgerfile) reconciler.cmdloop() else: print('No matching account found for "{acct}"'.format( acct=self.args.reconcile )) return 0
def run_it(self, before_date, after_date, schedule, enter_days=7): schedulefiledata = self.get_schedule_file( util.get_date_string(before_date), schedule, enter_days ) tempschedulefile = FileTester.write_to_temp_file( FileTester.testdir + 'run_it_schedule_file', schedulefiledata ) schedulefile = ScheduleFile(tempschedulefile) templedgerfile = FileTester.write_to_temp_file( FileTester.testdir + 'run_it_ledger_file', '' ) ledgerfile = LedgerFile(templedgerfile) scheduler = Scheduler(ledgerfile, schedulefile) scheduler.run() ledgerfile.write_file() schedulefile.write_file() schedulefile_actual = FileTester.read_file(tempschedulefile) schedulefile_expected = self.get_schedule_file( util.get_date_string(after_date), schedule, enter_days ) os.remove(templedgerfile) os.remove(tempschedulefile) self.assertEqual(schedulefile_expected, schedulefile_actual)