def test_add_to_groups(self): new_groups = {"dupa", "test", "zarzad"} edited_hackers = hacker_assign_to_groups( hacker_reader(test_file_lines), new_groups, hid=test_id1) edited_hacker = next( filter(lambda h: h.hid == test_id1, edited_hackers)) self.assertTrue(new_groups.issubset(edited_hacker.groups))
def test_hacker_remove_nonexistent(self): edited_hackers = hacker_remove(hacker_reader(test_file_lines), hid="dupa") try: len(list(edited_hackers)) except HackerNotFoundException: pass
def test_hacker_remove_group(self): test_groups = {"zarzad", "benis"} edited_hackers = hacker_remove_group(hacker_reader(test_file_lines), test_groups, hacker_pattern(hid=test_id1)) hacker_found = next( filter(lambda h: hacker_matches(h, hacker_pattern(hid=test_id1)), edited_hackers)) self.assertTrue(hacker_found.groups.isdisjoint(test_groups))
for h in hackers: yield Event(h.entry_date, "newMember", h.email) def events_generator(hacker_events: Iterable[Hacker], transaction_events: Iterable[Hacker]) -> Iterable[Event]: first_date = min(transaction_events[0].date, hacker_events[0].date) first_of_the_month_events = iter(first_of_the_month_event_generator(first_date)) current_month_event = next(first_of_the_month_events) for e in sorted(transaction_events + hacker_events, key=lambda e: e.date): while e.date.month != current_month_event.date.month: yield current_month_event current_month_event = next(first_of_the_month_events) yield e if __name__ == "__main__": import sys args = hacker_cli_argparse.parse_args() input_file = sys.stdin if args.input_file == '-' else open(args.input_file) output_file = sys.stdout if args.output_file == '-' else open(args.output_file, 'w') hackers_file = open(args.hackers_file) hackers = list(hacker_reader(hackers_file)) transactions = parse_transactions(input_file) transaction_events = sorted(transactios2dues_events(transactions, hackers), key=lambda e: e.date) hacker_events = sorted(hackers2events(hackers), key=lambda e: e.date) output_file.writelines(dsv_generator(events_generator(hacker_events, transaction_events)))
def test_hacker_remove(self): edited_hackers = hacker_remove(hacker_reader(test_file_lines), hid=test_id1) self.assertTrue(len(list(edited_hackers)) == len(test_file_lines) - 1)
def test_hacker_add(self): edited_hackers = hacker_add(hacker_reader(test_file_lines), test_hacker) hacker_found = filter(lambda h: h.hid == test_hacker.hid, edited_hackers) self.assertTrue(len(list(hacker_found)) == 1)