def test_update_donor(): # Tests that new donor can be added and updated dc = DonorCollection() dc.updateDonor('Jason Mendoza', 100.) dc.updateDonor('Jason Mendoza', 200.) d = dc.getDonor('Jason Mendoza') assert d.lastDonation() == 200. assert d.totalDonations() == 300. assert d.numDonations() == 2 assert d.averageDonation() == 150.
def test_report_generation(): # Test report generation dc = DonorCollection() donors = ['Eleanor Shellstrop', 'Jason Mendoza', 'Chidi Anagonye'] amounts = [[50., 25., 75.], [100., 50., 80.], [200., 100., 300.]] for donor, amount in zip(donors, amounts): for donation in amount: dc.updateDonor(donor, donation) report = dc.generateReportData() assert len(report) == len(donors) assert report[-1] == ('Eleanor Shellstrop', 150., 3, 50.)
def test_get_donor(): # Test that donors can be retrieved from collection dc = DonorCollection() dc.updateDonor('Jason Mendoza', 100.) d = dc.getDonor('Jason Mendoza') assert isinstance(d, Donor) assert d.name == 'Jason Mendoza' assert d.lastDonation() == 100. # Should return new donor if donor does not exist d = dc.getDonor('New Donor') assert isinstance(d, Donor) assert d.name == 'New Donor'
def test_get_donor_names(): # Test that list of donor names can be retrieved dc = DonorCollection() dc.updateDonor('Eleanor Shellstrop', 50.) dc.updateDonor('Jason Mendoza', 25.) dc.updateDonor('Chidi Anagonye', 100.) donors = dc.donorNames donors.sort() assert donors == ['Chidi Anagonye', 'Eleanor Shellstrop', 'Jason Mendoza']
def test_add_donor(): # Test that donors can be added to collection dc = DonorCollection() dc.updateDonor('Jason Mendoza', 25.) donors = dc.donors assert 'Jason Mendoza' in donors
def send_letters(): # Prompt for directory to write to target = input('Enter directory to put letters > ') if create_directory(target): write_letters(target) def exit_program(): print('Exiting program...') sys.exit() def main(): response_dict = {'1':write_thank_you,'2':create_report,'3':send_letters,'4':exit_program} # Main function, repeatedly display prompt and react based on user input while True: try: response_dict[input(prompt)]() except KeyError: print('Not a valid option! Please try again.') if __name__ == "__main__": # Create some donor data for running the program from the command line dc = DonorCollection() donors = ['Eleanor Shellstrop', 'Jason Mendoza', 'Chidi Anagonye'] amounts = [[50.,25.,75.], [100.,50.,80.], [200.,100.,300.]] for donor, amount in zip(donors,amounts): for donation in amount: dc.updateDonor(donor, donation) # Driver for main function main()