def test_donor_collection(self): donors = mailroom_db.DonorCollection() # Test adding donors d1 = mailroom_db.Donor("Hello", "World") d1.add_donation(50) d1.add_donation(25) d2 = mailroom_db.Donor("World", "Hello") d2.add_donation(150) d2.add_donation(125) donors.add_donor(d1) donors.add_donor(d2) d_names = [d.get_name() for d in donors.get_donors()] # Verify donors got added, and donor info is correct self.assertIn(d1.get_name(), d_names) self.assertIn(d2.get_name(), d_names) for d in donors.get_donors(): if d.get_name() == d1.get_name(): self.assertEqual(d1.get_donations(), d.get_donations()) elif d.get_name() == d2.get_name(): self.assertEqual(d2.get_donations(), d.get_donations()) else: self.fail("Could not find donor: {name}".format(d.get_name())) # Verify adding a donor donors.add_donation("Hello", "World", 10) for d in donors.get_donors(): if d.get_name() == d1.get_name(): self.assertEqual([50, 25, 10], d.get_donations())
def create_default_db(self): db = mailroom_db.DonorCollection() # Some default data d1 = mailroom_db.Donor("Jimmy", "Stewart") d1.add_donation(50) d2 = mailroom_db.Donor("Cary", "Grant") d2.add_donation(30) d2.add_donation(40) d3 = mailroom_db.Donor("Audrey", "Hepburn") d3.add_donation(80) d3.add_donation(90) d3.add_donation(100) db.add_donor(d1) db.add_donor(d2) db.add_donor(d3) return db
def challenge_project(db, above=0, below=0, multiplier=1): # Iterate through the old db, adding every donation in there new_db = mailroom_db.DonorCollection() for donor in db.get_donors(): if above > 0: donations_list = filter(lambda d: d > above, donor.get_donations()) elif below > 0: donations_list = filter(lambda d: d < below, donor.get_donations()) else: donations_list = donor.get_donations() for donation in map(lambda d: d * multiplier, donations_list): name = donor.get_key() new_db.add_donation(name[0], name[1], donation) return_list = list() return_list.append("Previous DB:") return_list.append(create_report(db)) return_list.append("\n\nNew DB:") return_list.append(create_report(new_db)) return_list.append('\n\n') return '\n'.join(return_list)
'7': change_donation } def draw_main_menu(): print("\n".join(main_menu_list)) def get_main_menu_input(): user_input = input(":") user_input = user_input.lower().strip() return user_input if __name__ == "__main__": db = mailroom_db.DonorCollection() # Some default data db.add_donation("Jimmy", "Stewart", 50) db.add_donation("Cary", "Grant", 30) db.add_donation("Cary", "Grant", 40) db.add_donation("Audrey", "Hepburn", 80) db.add_donation("Audrey", "Hepburn", 90) db.add_donation("Audrey", "Hepburn", 100) # Now on to the meat and potatos of the mailroom running = True while running: draw_main_menu() user_input = get_main_menu_input() if user_input in main_menu_actions.keys(): print(main_menu_actions[user_input](db), "\n\n")