Esempio n. 1
0
 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))
Esempio n. 2
0
 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
Esempio n. 3
0
 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))
Esempio n. 4
0
    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)))
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)