def test_don_init(): d1 = mro.Donor("DJ Cool Buttz", [69]) d2 = mro.Donor("DJ CB JR", [420, 80]) assert d1.name == "DJ Cool Buttz" assert d2.name == "DJ CB JR" assert sum(d1.donations) == 69 assert sum(d2.donations) == 500
def test_add_donor(): tester = mailroom_oo.Donor("Test Person", [1, 2, 3]) tester2 = mailroom_oo.Donor("Test2 Person2", [4, 5, 6]) test_donors = mailroom_oo.DonorList([tester, tester2]) assert(test_donors.list_donor_names() == "Test Person\nTest2 Person2") tester3 = mailroom_oo.Donor("Test3 Person3", [7, 8, 9]) test_donors.add_donor(tester3) assert(test_donors.list_donor_names() == "Test Person\nTest2 Person2\nTest3 Person3") assert(tester3.num_donations == 3)
def test_donor_history(self): d1 = mailroom.Donor("Tony", "Lee", [100.0]) d2 = mailroom.Donor("Andy", "Arko", [200.0]) test_dh = mailroom.DonorHistory([d1, d2]) self.assertEqual(test_dh.get_all_donor_names(), ["Tony Lee", "Andy Arko"]) d3 = mailroom.Donor("Michelle", "Cao", [300.0]) test_dh.add_donor(d3) self.assertEqual(test_dh.get_all_donor_names(), ["Tony Lee", "Andy Arko", "Michelle Cao"]) self.assertEqual(test_dh.donors[0].donations, [100]) self.assertEqual(test_dh.donors[1].first, 'Andy') self.assertEqual(test_dh.donors[1].last, 'Arko') self.assertEqual(test_dh.donors[0].full_name, 'Tony Lee')
def test_list_donors(): donors = mr.Donors() donor = mr.Donor() # Test formatting and sorting of the dictionary when listing donors assert str(donors.list_donors()).split("\n")[0] == "No. Name " assert str(donors.list_donors()).split("\n")[1] == "==== =======" assert str(donors.list_donors()).split("\n")[2] == "1 Arya Stark"
def test_donor(self): test_donor = mailroom.Donor("Tony", "Lee", [100.0]) self.assertEqual(test_donor.donations, [100.0]) self.assertEqual(test_donor.full_name, "Tony Lee" ) test_donor.add_donation(200.0) self.assertEqual(test_donor.donations, [100.0, 200.0] )
def test_donor_data_to_obj(): d1 = m.Donor('William Gates, III', database['William Gates, III']) print(d1.name) print(d1.donations) assert d1.name == 'William Gates, III' assert d1.donations == database['William Gates, III']
def test_file_created(): donors = mr.Donors() donor = mr.Donor() donors.send_letter_to_all() file_to_test = tempfile.gettempdir() + "/James_Butts.txt" # Make sure letters are getting created (written to temp) assert os.path.exists(file_to_test)
def test_donor_property_sum_number_avg(): d2 = m.Donor('Mark Zuckerberg', database['Mark Zuckerberg']) print(d2.total) print(d2.num_donations) print(d2.average_don) assert d2.total == sum(database['Mark Zuckerberg']) assert d2.num_donations == 3 assert d2.average_don == sum(database['Mark Zuckerberg']) / 3
def test_sum_amount(): ''' Verifies sum_amount method properly adds up a donation total for a donor ''' new_donor = mail.Donor('Chaz', [1000, 1000, 1000]) total_donated = new_donor.sum_amount() assert total_donated == 3000
def test_show_donors(): donors = mr.Donors() donor = mr.Donor() # Check calculations # Number of donations assert len(donors.donor_db["Melisandre"]) == 4 # Total donations assert sum(donors.donor_db["Melisandre"]) == 300019.00 # Average donation assert sum(donors.donor_db["Melisandre"]) / len(donors.donor_db["Melisandre"]) == 75004.75
def test_donor_instance(): ''' tests that a new donor can be created with attributes properly assigned ''' new_donor = mail.Donor('George Washington', 10000) new_donor.name == 'George Washington' new_donor.amount == 10000
def test_donor_verify(): ''' tests donor_verify successfully updates dictionary depending on name given ''' new_donor = mail.Donor('Bill Gates', 500) mail.donor_verify(new_donor) # checks to see 500 was added to Gates assert mail.donor_collection.donor_dict.get('Bill Gates') == [ 539000, 235642, 500 ] next_donor = mail.Donor('Bob', 100) mail.donor_verify(next_donor) # checks to verify Bob was added to donor_dict assert mail.donor_collection.donor_dict.get('Bob') == [100]
def test_update_donor(): ''' Verifies a donation amount is added to donor_collection if method update donor called ''' donor = mail.Donor('Bill Gates', 500) donor_collection = mail.DonorCollection() donor_collection.update_donor(donor) assert 500 in donor_collection.donor_dict.get('Bill Gates')
def test_add_donor(): ''' Verifies a new donor can be added to donor_collection if method update add_donor called ''' donor = mail.Donor('Jimi Hendrix', 1000) donor_collection = mail.DonorCollection() donor_collection.add_donor(donor) assert 'Jimi Hendrix' in donor_collection.donor_dict assert 1000 in donor_collection.donor_dict.get('Jimi Hendrix')
def test_add_donor(): """ adds a new donor then tests that the donor is added, and that a donation is properly recorded. """ name = "Fred Flintstone " donor = mailroomoo.Donor(name) mailroom.add_donor(donor) donor.donations.append(300) assert donor.name == "Fred Flintstone" assert donor.donations == [300] assert mailroom.get_donor(name) == donor
def test_thank_you_note(): ''' Tests formatted message is displayed properly ''' joe = mail.Donor('Joe Biden', 5000) exp_output = ( 'Dear Joe Biden, \n\nThank you for your show of support and generosity. ' 'Your Donation of $5000 will contribute to saving Olympic Marmots ' 'in Washington State. These Marmota are special and a unique gift to the Olympic ' 'National Park ecosystem. As a way of saying thank you. ' 'You will be receiving your very own Olympic Marmot t-shirt in the mail!\n\n' 'Sincerely,\n\nThe Olympic Marmot Wildlife Foundation\n') assert mail.thank_you_note(joe) == exp_output
def test_format_email(): donors = mr.Donors() donor = mr.Donor() # test normal case for generating mail text assert donor.format_email("James Butts", 100.00, 1000.00) == ''.join(( "Dear James Butts,\n\n", "Thank you for your recent contribution of $100.00.\n\n", "We appreciate your generosity in support of our mission.\n\n", "Thank you for your lifetime contributions of $1000.00.\n\n" "Warmest Regards,\n\n", "Charity Staff\n")) # test for number formatting in mail text assert donor.format_email("Joe Biden", 10000.9999, 1000.1) == ''.join(( "Dear Joe Biden,\n\n", "Thank you for your recent contribution of $10001.00.\n\n", "We appreciate your generosity in support of our mission.\n\n", "Thank you for your lifetime contributions of $1000.10.\n\n" "Warmest Regards,\n\n", "Charity Staff\n"))
def test_add_contribution(): donors = mr.Donors() donor = mr.Donor() donors.add_contribution("James Butts", 100) assert donors.donor_db["James Butts"][-1:] == [100] # Test that we are summing total contributions correctly assert sum(donors.donor_db["James Butts"]) == 100 # Pass a contribution to a recurring donor donors.add_contribution("Daenerys Targaryen", 100) assert donors.donor_db["Daenerys Targaryen"][-1:] == [100] # Test that we are summing total contributions correctly assert sum(donors.donor_db["Daenerys Targaryen"]) == 8355.00 # Pass multiple contributions to a recurring donor donors.add_contribution("Daenerys Targaryen", [100, 200]) assert donors.donor_db["Daenerys Targaryen"][-2:] == [100, 200] # Test that we are summing total contributions correctly for multiple contributions assert sum(donors.donor_db["Daenerys Targaryen"]) == 8655.00
def test_get_letter_text(): donors = mr.Donors() donor = mr.Donor() donors.send_letter_to_all() letter_text = "" tempfilepath = tempfile.gettempdir() + "/James_Butts.txt" with open(tempfilepath, "r") as letter_file: letter_text = letter_file.readlines() letter_text = "".join(letter_text) print(letter_text) print(''.join(("Dear James Butts,\n\n", "Thank you for your recent contribution of $100.00.\n\n", "We appreciate your generosity in support of our mission.\n\n", "Thank you for your lifetime contributions of $100.00.\n\n", "Warmest Regards,\n\n", "Charity Staff\n"))) assert letter_text == ''.join(("Dear James Butts,\n\n", "Thank you for your recent contribution of $100.00.\n\n", "We appreciate your generosity in support of our mission.\n\n", "Thank you for your lifetime contributions of $100.00.\n\n", "Warmest Regards,\n\n", "Charity Staff\n"))
print(f'Do better {name}') else: dc.add_contribution(name, don_amount) print(dr.thanks_mail(name, don_amount)) mainy() except ValueError: print('You have entered a non-number, try again') if don.upper() == 'N' or 'NO': input_name() def analytics(): dc.data_metrics() def mass_mail(): dc.mass_mail() def exit_program(): print("Bye!") sys.exit() if __name__ == "__main__": dc = mailroom_oo.DonorCollection() dr = mailroom_oo.Donor() # why does this work with and without parenthesis? dc.loadup() mainy()
def test_add_donor_and_donation(): tester = mailroom_oo.Donor("Test Person", [1, 2, 3]) tester2 = mailroom_oo.Donor("Test2 Person2", [4, 5, 6]) test_donors = mailroom_oo.DonorList([tester]) test_donors.add_donor_and_donation(tester2, 7) assert(tester2.num_donations == 4)
def test_thanks_mail(): donor = mro.Donor() assert donor.thanks_mail("FunkyBaby", 175.00) == ''.join( ("\nDear FunkyBaby,\n", "Thanks for the $175.00 bucks.\n", "We'll spend it real good baby.\n"))
def test_add_donations(): add_tester = mailroom_oo.Donor("Test Person", [1, 2, 3]) add_tester.add_donation(4) assert(add_tester.donations == [1, 2, 3, 4]) assert(add_tester.donor_totals == 10)
''' Tests for mailroom_oo.py ''' import os import mailroom_oo tester = mailroom_oo.Donor("Test Person", [1, 2, 3]) tester2 = mailroom_oo.Donor("Test2 Person2", [4, 5, 6]) test_donors = mailroom_oo.DonorList([tester, tester2]) def test_name(): assert(tester.name == "Test Person") def test_first_donations(): assert(tester.donations == [1, 2, 3]) def test_donor_totals(): assert(tester.donor_totals == 6) def test_add_donations(): add_tester = mailroom_oo.Donor("Test Person", [1, 2, 3]) add_tester.add_donation(4) assert(add_tester.donations == [1, 2, 3, 4]) assert(add_tester.donor_totals == 10) def test_num_donations(): assert(tester.num_donations == 3) def test_average_donations(): assert(tester.average_donations == 2)
input("Donor {} doesn't exist, add them (y/n)?:".format( donor_name))) if response.lower() == 'y': donors.add_contribution(donor_name, amount) print( donor.format_email(donor_name, amount, sum(donors.donor_db[donor_name]))) # return donor_db def main(): ''' main loop, continually present users with menu options ''' while True: switcher(int(input(print_menu()))) if __name__ == '__main__': # We're not getting imported, run main(): # donor_db = {} # dict that contains user/donation records donors = mr.Donors() donor = mr.Donor() donors.populate_data main() else: # donor_db = {} donors = mr.Donors() donor = mr.Donor() donors.populate_data
def test_list_donor(): """Test that the list of donors is returned correctly.""" d1 = mailroom.Donor() listing = d1.show_donor_names() assert "Jimmy Nguyen" in listing assert "Elizabeth McBath" in listing
def test_get_donors_details(): donors = mr.Donors() donor = mr.Donor() # Check output and formating of get_donor_details() donor_list = donors.get_donors_details() assert donor_list[1] == 'Arya Stark $10899.92 5 $2179.98 \n'
import mailroom_oo as m database = {'William Gates, III': [54842.49, 48965.25], 'Mark Zuckerberg': [7852.25, 48652.0, 3548.0], 'Jeff Bezos': [5486.0, 58794.02, 7412.1], 'Paul Allen': [46872.02]} d1 = m.Donor('William Gates, III', database['William Gates, III']) d2 = m.Donor('Mark Zuckerberg', database['Mark Zuckerberg']) d3 = m.Donor('Jeff Bezos', database['Jeff Bezos']) d4 = m.Donor('Paul Allen', database['Paul Allen']) def test_donor_data_to_obj(): d1 = m.Donor('William Gates, III', database['William Gates, III']) print(d1.name) print(d1.donations) assert d1.name == 'William Gates, III' assert d1.donations == database['William Gates, III'] # assert False def test_donor_property_sum_number_avg(): d2 = m.Donor('Mark Zuckerberg', database['Mark Zuckerberg']) print(d2.total) print(d2.num_donations) print(d2.average_don) assert d2.total == sum(database['Mark Zuckerberg']) assert d2.num_donations == 3