Example #1
0
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.
Example #2
0
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.)
Example #3
0
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'
Example #4
0
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']
Example #5
0
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
Example #6
0
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()