def test_update_donors_db():
    donor_1 = Donor('Adan', 'William', 100.75)
    donor_1.add_donation_amount(1200)
    donor_1.add_donation_amount(3200.45)
    donor_2 = Donor('Peter', 'Chiykowski', 25.25)
    donor_2.add_donation_amount(4340.25)
    donor_3 = Donor('Sara', 'Gogo', 650)
    my_donor_list = DonorCollection() # the donor data base
    # test adding new donors to the data base
    my_donor_list.update_donors_db(donor_1)
    my_donor_list.update_donors_db(donor_2)
    my_donor_list.update_donors_db(donor_3)
    assert len(my_donor_list.donorList) == 3 # test total number of donors
    assert my_donor_list.donorList[0].first_name == 'Adan'
    assert my_donor_list.donorList[0].last_name == 'William'
    assert my_donor_list.donorList[0].donation[1] == 1200
    assert my_donor_list.donorList[1].first_name == 'Peter'
    assert my_donor_list.donorList[1].last_name == 'Chiykowski'
    assert my_donor_list.donorList[1].donation[1] == 4340.25
    assert my_donor_list.donorList[2].first_name == 'Sara'
    assert my_donor_list.donorList[2].last_name == 'Gogo'
    assert my_donor_list.donorList[2].donation[0] == 650
    # test adding donation to existing donor
    donor_new = Donor('Sara', 'Gogo', 100)
    my_donor_list.update_donors_db(donor_new)
    assert len(my_donor_list.donorList) == 3 # still three donors
    assert my_donor_list.donorList[2].first_name == 'Sara'
    assert my_donor_list.donorList[2].last_name == 'Gogo'
    assert my_donor_list.donorList[2].total_gifts == 2 # total gifts changed
    assert my_donor_list.donorList[2].total_amount == 750 # tot amount changed
# create example donor database.
donor_1 = Donor('Adan', 'William', 100.75)
donor_1.add_donation_amount(1200)
donor_1.add_donation_amount(3200.45)
donor_2 = Donor('Peter', 'Chiykowski', 25.25)
donor_2.add_donation_amount(4340.25)
donor_3 = Donor('Sara', 'Gogo', 650)
donor_4 = Donor('Jason', 'Zhang', 150.00)
donor_4.add_donation_amount(35.50)
donor_4.add_donation_amount(80.75)
donor_5 = Donor('Zooe', 'Bezos', 10)
donor_5.add_donation_amount(20)

donors_db = DonorCollection() # the donor data base
donors_db.update_donors_db(donor_1)
donors_db.update_donors_db(donor_2)
donors_db.update_donors_db(donor_3)
donors_db.update_donors_db(donor_4)
donors_db.update_donors_db(donor_5)

# test send thank you letter to each donor.
def test_send_letters():
    donor_list = []
    sorted_list = donors_db.sort_donors_db()
    for donor in sorted_list:
        my_str = donor.send_letters().strip()
        donor_list.append(my_str)
    my_str = ''.join(donor_list)
    assert my_str.startswith('Dear')
    assert my_str.endswith('Zhen')