Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 4
0
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
Esempio n. 6
0
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
Esempio n. 8
0
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!'))
Esempio n. 9
0
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
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
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")
Esempio n. 15
0
def test_init():
    """
    This tests the creation of instance for both the Donor and
    Donors classes.
    """
    d = Donor("Horse Malone")
    d = Donors()
Esempio n. 16
0
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
Esempio n. 18
0
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)
Esempio n. 19
0
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)
Esempio n. 20
0
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])
Esempio n. 21
0
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)
Esempio n. 22
0
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]
Esempio n. 24
0
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
Esempio n. 25
0
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])
Esempio n. 26
0
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')
Esempio n. 27
0
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"
Esempio n. 29
0
            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])'