def test_challenge(): d = Donor('Paul Allen') d.add_donation(100) db = DonorDB() db.add_donor(d) db.challenge(3, mn=10) assert db.projection[d.name][0] == 300
def test_compare(): d1 = Donor("Bob Smith", [100, 100, 200]) d2 = Donor("John Doe", [150, 250]) d3 = Donor("Sally Jones", [250, 250]) assert (d1 == d2) assert (d3 > d1) assert (d2 != d3)
def test_total_amount_donated(): donor_1 = Donor("Adam Johnson", [10., 20, 10, 10]) donor_2 = Donor("Matt Marvin", [40, 10, 5]) donor_3 = Donor("Ashley Wiggins", [5, 25, 20]) donor_4 = Donor("Kristina Laughrey", [50, 5, 20]) d = DonorCollection(donor_1, donor_2, donor_3, donor_4) assert d.total_amount_donated == 230
def test_donor_init(): d = Donor('William Gates III') assert d.name == 'William Gates III' assert d.donations == [] d.add_donation(100) d.add_donation(200) assert d.total_donations == 300
def test_init_(): d = Donor("Benny", [2000]) assert d.name == "Benny" assert d.donations == [2000] arg = [200, 300, 400, 100] d = Donor("Benny Huggins", arg) assert d.name == "Benny Huggins" assert d.donations == arg
def test_initlist(): """ For Donor Class Object: Tests setting an initial donation list. """ d = Donor("Horse Malone") d.initlist([50, 90.78, 100]) assert (d.donationlist == [50, 90.78, 100])
def test_challenge(): d = Donor('Paul Allen') d.add_donation(1000) db = DonorDB() db.add_donor(d) db.challenge(2, mn=100) assert db.projection[d.name][0] == 2000 # assert print(db.projection) and False
def test_email(): """ For Donor Class Object: Tests class function "average" for correct output. """ d = Donor("Horse Malone") d.add_donation(50) assert (d.email(50) == ('\nDear Horse Malone, ' '\n\tThank you for your generous $50.00 donation.' '\n\tYou are an amazing person. Good job!'))
def test_donor(): d = Donor("Quincy Adams", [100, 200, 300, 400]) assert (d.name == "Quincy Adams") assert (d.donations == [100, 200, 300, 400]) assert (d.num_donations == 4) assert (d.total_donations == 1000) assert (d.avg_donation == 250) d.donate(500) assert (d.num_donations == 5) assert (d.total_donations == 1500) assert (d.avg_donation == 300)
def test_properties(): d = Donor("John Adam", [307.9]) assert d.name == "John Adam" assert d.donations == [307.9] assert d.total_donations == 1 assert d.total_donations_amount == 307.9 assert d.avg_donation == 307.9 args = [200, 300, 400, 100] d = Donor("Ashley Wiggins", args) assert d.name == "Ashley Wiggins" assert d.donations == args assert d.total_donations == 4 assert d.total_donations_amount == 1000 assert d.avg_donation == 250
def test_projected_amount(): donor_1 = Donor("Adam Johnson", [10., 20, 10, 10]) donor_2 = Donor("Matt Marvin", [40, 10, 5]) donor_3 = Donor("Ashley Wiggins", [5, 25, 20]) donor_4 = Donor("Kristina Laughrey", [50, 5, 20]) d = DonorCollection(donor_1, donor_2, donor_3, donor_4) assert d.projected_amount("Benny", 2) == 460 d = DonorCollection(donor_1, donor_2, donor_3, donor_4) assert d.projected_amount("Tommy", 3) == 230 * 3 d = DonorCollection(donor_1, donor_2, donor_3, donor_4) assert d.projected_amount("Kristina Laughrey", 2, 55, 90) == 130 * 2 d = DonorCollection(donor_1, donor_2, donor_3, donor_4) assert d.projected_amount("Kristina Laughrey", 4, 40, 60) == 155 * 4
def test_challenge(): d1 = Donor("Bob Smith", [100, 100, 200, 300]) assert (d1.challenge(2) == [200, 200, 400, 600]) d2 = Donor("John Doe", [150, 250]) assert (d2.challenge(3, min=200, max=300) == [750]) d3 = Donor("Sally Jones", [250, 250]) assert (d3.challenge(4, min=100, max=200) == []) dr = DonationRecords([d1, d2, d3]) assert (dr.challenge(3) == 4800) assert (dr.challenge(2, min=200, max=500) == 2500) assert (dr.challenge(5, max=200) == 2750)
def thank_you(d): """ This method was created to utilize the dictionary (options) in the program main flow """ input_msg = """Please enter the donor's full name OR \rtype 'list' for the existing donors: """ name = name_prompt(input_msg) while name.lower() == "list": display_list(d) name = name_prompt(input_msg) donation = donation_prompt(name) donor = Donor(name, donation) print(donor.thank_you()) d.add_donation(name, donation)
def test_thank_all(): d1 = Donor("Bob Smith", [100, 100, 200, 300]) dr = DonationRecords([d1]) dr.thank_all() assert os.path.isfile("Bob_Smith.txt") # clean up test thank you file, for cleanliness os.remove("Bob_Smith.txt")
def test_init(): """ This tests the creation of instance for both the Donor and Donors classes. """ d = Donor("Horse Malone") d = Donors()
def test_name(): """ For Donor Class Object: Tests that correct donor name returns when Donor class Function is called. """ d = Donor("Horse Malone") assert (d.name == "Horse Malone")
def test_add_donation(): d = Donor("John Adam", [307.9]) d.add_donation(200) assert d.donations[-1] == 200 args = [200, 300, 400, 100] d = Donor("Ashley Wiggins", args) d.add_donation(500) assert d.donations[-1] == 500 assert d.total_donations == 5 assert d.total_donations_amount == 1500
def test_average(): """ For Donor Class Object: Tests class function "average" for correct output. """ d = Donor("Horse Malone") d.add_donation(50) d.add_donation(100.78) d.add_donation(99.99) assert (d.average == 83.59)
def test_total(): """ For Donor Class Object: Tests how many donations were given by donor. """ d = Donor("Horse Malone") d.add_donation(50) d.add_donation(100.78) d.add_donation(99.99) assert (d.total == 3)
def test_donationlist(): """ For Donor Class Object: Tests historical donation list outputs correct data. """ d = Donor("Horse Malone") d.add_donation(50) d.add_donation(100.78) d.add_donation(99.99) assert (d.donationlist == [50.00, 100.78, 99.99])
def test_add_donor(): """ For Donors Class Object: Tests that a new donor gets added to the donors names list. """ c = Donor('Post Malone') d = Donors() d.add_donor(c) assert (c in d.donors)
def test_amount(): """ For Donor Class Object: Tests sum total of donationlist is correct based on previous donations. """ d = Donor("Horse Malone") d.add_donation(50) d.add_donation(100.78) d.add_donation(99.99) assert (d.amount == 250.77)
def test_challenge(): donor = Donor("A", [5, 7]) assert donor.challenge(2) == [10, 14] assert donor.challenge(3) == [15, 21] donor = Donor("B", [1, 3, 5, 7, 9]) assert donor.challenge(2, min=5) == [10, 14, 18] assert donor.challenge(2, max=5) == [2, 6, 10] assert donor.challenge(2, min=3, max=7) == [6, 10, 14]
def test_donation_records(): d1 = Donor("Bob Smith", [100, 100, 200, 300]) d2 = Donor("John Doe", [150, 250]) d3 = Donor("Sally Jones", [250, 250]) dr = DonationRecords([d1, d2, d3]) num_donors = len(dr.donors) assert (num_donors == 3) assert (dr.get_donor("John Doe") is not None) assert (dr.get_donor("No Name") is None) dr.add_donor(Donor("Bill Nye", [100])) num_donors = len(dr.donors) assert (num_donors == 4) report_text = dr.create_report() assert "Bob Smith" in report_text assert "175.00" in report_text # Bob's average assert "700.00" in report_text # Bob's total assert "Sally Jones" in report_text assert "250.00" in report_text # Sally's average assert "Bill Nye" in report_text assert "100.00" in report_text # Bill's average
def test_add_donation(): """ For Donor Class Object: Tests that a new donation gets added to donors donation list. """ d = Donor("Horse") assert (d.donationlist == []) d.add_donation(50) assert (d.donationlist == [50]) d.add_donation(100.78) assert (d.donationlist == [50.00, 100.78])
def test_donors(): d = Donor('Paul Allen') d.add_donation(600) db = DonorDB() db.add_donor(d) assert db.get_total_from_donor('Paul Allen') == 600 e = Donor('Jeff Bezos') e.add_donation(100) e.add_donation(200) db.add_donor(e) assert db.get_total_from_donor('Jeff Bezos') == 300 assert db.count_donors == 2 assert db.count_donations == 3 assert db.total_donations == 900 assert db.average_total_donation == 450 assert db.average_single_donation == 300 test_list = db.donor_list() assert test_list.startswith('Paul Allen') assert test_list.endswith('Jeff Bezos')
def test_send_all(): """ For Donors Class Object: Tests to see if a txt file email is written for each donor. """ d = Donors() d.send_all() assert os.path.isfile('Leon_Dechino.txt') assert os.path.isfile('Michael_Scarn.txt') assert os.path.isfile('Lamar_Dankers.txt') assert os.path.isfile('Horse_Malone.txt') assert os.path.isfile('Rupert_Everton.txt') # Add Donor and check again c = Donor('Post Malone') d.add_donor(c) d.send_all() assert os.path.isfile('Leon_Dechino.txt') assert os.path.isfile('Michael_Scarn.txt') assert os.path.isfile('Lamar_Dankers.txt') assert os.path.isfile('Horse_Malone.txt') assert os.path.isfile('Rupert_Everton.txt') assert os.path.isfile('Post_Malone.txt')
assert d.avg_donation == 250 def test_add_donation(): d = Donor("John Adam", [307.9]) d.add_donation(200) assert d.donations[-1] == 200 args = [200, 300, 400, 100] d = Donor("Ashley Wiggins", args) d.add_donation(500) assert d.donations[-1] == 500 assert d.total_donations == 5 assert d.total_donations_amount == 1500 donor_1 = Donor("Adam Johnson", [600, 2200]) donor_2 = Donor("Matt Marvin", [500, 100]) donor_3 = Donor("Ashley Wiggins", [55]) dic = { "Adam Johnson": Donor("Adam Johnson", [600, 2200]), "Matt Marvin": Donor("Matt Marvin", [500, 100]), "Ashley Wiggins": Donor("Ashley Wiggins", [55]) } def test__init__DonorCollection(): d = DonorCollection(donor_1, donor_2, donor_3) assert d.donors.keys() == dic.keys() assert d.donors[donor_1.name].donations == [600, 2200] assert d.donors[donor_2.name].name == "Matt Marvin"
print("***INVALID Option Selected: Please Try Again!***") if __name__ == "__main__": """The flow control of the program. It separates the business logic from the data manipulation""" options = { 1: thank_you, 2: print_report, 3: send_letter_everyone, 4: match_donations, 5: quit } donor_1 = Donor("Adam Johnson", [30., 20, 10, 10]) donor_2 = Donor("Matt Marvin", [40, 10, 5]) donor_3 = Donor("Ashley Wiggins", [55, 25, 20]) donor_4 = Donor("Kristina Laughrey", [50, 30, 20]) donor_5 = Donor("Kimberley Allen", [10, 90]) donor_6 = Donor("Doug Boolinger", [100]) donor_7 = Donor("Sherry Henning", [60, 30]) d = DonorCollection(donor_1, donor_2, donor_3, donor_4, donor_5, donor_6, donor_7) while True: user_response = prompt_user() if user_response == 5: quit() try: options[user_response](d)
def test_repr(): d = Donor("Benny", [2000]) assert repr(d) == 'Donor(Benny,[2000])'