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)
예제 #2
0
def test_make_Donors():
    d1 = Donor("Fred Flinstone")
    d2 = Donor("James Dean")
    d3 = Donor("Jack the Ripper")
    donor_list = [d1, d2, d3]
    d_list = Donors(donor_list)
    assert d_list.donor_list[0].name == "Fred Flinstone"
예제 #3
0
def test_donor_letter_witout():
    '''test the note writing function without a current donation'''
    alex = Donor('Alex', [100])
    output = ("Dear Alex,\n\nThank you for your generosity to our cause.\nYou "
              "have now given a total of $100.\nWe greatly appreciate "
              "your contributions!\n\nThank you!\nAlex Laws")
    assert alex.write_note() == output
예제 #4
0
def test_add_donation_existing_donor():
    '''test function that adds donations to existing person'''
    alex = Donor('Alex', [100])
    ryan = Donor('Ryan', [300])
    donor_list_obj = Donor_list(alex, ryan)
    run_mailroom.add_donation('Ryan', 500, donor_list_obj)
    assert donor_list_obj.get_donor('Ryan').donations == [300, 500]
def test_add_donation():
    reset_data()
    mailroom = Mailroom()
    assert mailroom.donors_list.add_donation("Test1", 55.55) == Donor("Test1")
    assert mailroom.donors_list.add_donation("Test1", 4) == Donor("Test1")
    assert mailroom.donors_list.add_donation("Laura Todd",
                                             99) == Donor("Laura Todd")
예제 #6
0
def test_send_thanks_single_donation():
    """ test thank you letter """
    mailroom = Mailroom()
    donor = Donor("Monty Python")
    donor.add_donation(10)
    assert "\n\nDear Monty Python,\nThank you for your donation of 10.\n\n" == mailroom.send_thanks(
        donor)
def test_donor_eq():
    reset_data()
    mailroom = Mailroom()
    donor1 = Donor("A")
    donor2 = Donor("B")
    assert not (donor1 == donor2)
    donor2 = Donor("A")
    assert donor1 == donor2
def test_donor_lt():
    reset_data()
    mailroom = Mailroom()
    donor1 = Donor("Frank Fred")
    donor2 = Donor("Lisa Grant")
    assert donor1 < donor2
    donor2 = Donor("Laura Todd")
    assert donor1 > donor2
예제 #9
0
def test_add_donor():
    """Test for adding a new donor in DMS."""
    name = "Teddy Tulip"

    donor = Donor.add_donor(name)
    donor.add_donation(55.55)
    assert donor.name == "Teddy Tulip"
    assert donor.last_donation == 55.55
    assert Donor.find_donor(name) == donor
예제 #10
0
def test_donor_letter_with():
    '''test the note writing function with a current donation'''
    alex = Donor('Alex', [100])
    alex.new_donation(500)
    output = ("Dear Alex,\n\nThank you for your generosity to our cause.\nYour"
              " recent gift of $500 is very helpful. You have now given a "
              "total of $600.\nWe greatly appreciate your contributions!"
              "\n\nThank you!\nAlex Laws")
    assert alex.write_note(500) == output
예제 #11
0
def test_Donor():
    test_donor = Donor('bob', [10, 20, 30])
    test_donor2 = Donor('joe', [20])
    assert test_donor.name == 'bob'
    assert test_donor.donations == [10, 20, 30]
    assert test_donor.total == 60
    assert test_donor.avg == 20
    assert test_donor.cnt == 3
    assert test_donor2 < test_donor
예제 #12
0
def test_list_donors():
    d1 = Donor("Fred Flinstone")
    d2 = Donor("James Dean")
    d3 = Donor("Jack the Ripper")
    d_list = Donors([d1, d2, d3])
    list_of_donors = d_list.list_donors()
    assert list_of_donors == [
        "Fred Flinstone", "James Dean", "Jack the Ripper"
    ]
예제 #13
0
def test_find_donor():
    d1 = Donor("Fred Flinstone", [100, 200, 300, 400])
    d2 = Donor("James Dean", [500, 600, 700, 800])
    d3 = Donor("Jack the Ripper", [1, 2, 3, 4])
    d4 = Donor("Mickey Mouse", [100, 200, 300, 5, 15, 7])
    d_list = Donors([d1, d2, d3, d4])
    donor_class = d_list.find_donor("Mickey Mouse")
    assert donor_class.donation == [100, 200, 300, 5, 15, 7]
    donor_class = d_list.find_donor("")
    assert donor_class == []
예제 #14
0
	def test_add_first_donation_to_donor(self):
		donor_name = "Sireesha Sankuratripati"
		donor = Donor (donor_name)
		self.assertEqual(donor_name, donor.donor_name)
		self.assertEqual(0, len(donor.donation_amounts_list))
		#add a donation
		donation_val = 1000.90
		donor.add_donation(donation_val)
		self.assertEqual(1, len(donor.donation_amounts_list))
		self.assertEqual(donation_val, donor.donation_amounts_list[0])
예제 #15
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_donor_name():
    with pytest.raises(Exception) as excinfo:
        d = Donor()
    assert str(excinfo.value) == "__init__() missing 1 required positional "\
                                 "argument: 'name'"

    d = Donor("Stuart")
    assert d.name == "Stuart"

    d.name = "Stuart Kershaw"
    assert d.name == "Stuart Kershaw"
예제 #17
0
def test_make_filenames():
    d1 = Donor("Fred Flinstone", [100, 200, 300, 400])
    d2 = Donor("James Dean", [500, 600, 700, 800])
    d3 = Donor("Jack the Ripper", [1, 2, 3, 4])
    d4 = Donor("Mickey Mouse", [100, 200, 300, 5, 15, 7])
    d_list = Donors([d1, d2, d3, d4])
    filenames = d_list.make_filenames()
    assert filenames == [
        "Fred_Flinstone.txt", "James_Dean.txt", "Jack_the_Ripper.txt",
        "Mickey_Mouse.txt"
    ]
예제 #18
0
def test_save():
    donors.load("test_donors.json")
    donors.add_donor(Donor("Json Donor 2", [5.50, 5.45]))
    donors.save("test_donors_save.json")
    donors.load("test_donors.json")
    donor = donors.find_donor("Json Donor 2")
    assert donor is None
    donors.load("test_donors_save.json")
    donor = donors.find_donor("Json Donor 2")
    donor2 = Donor("Json Donor 2", [5.50, 5.45])
    assert donor == donor2
예제 #19
0
def test_make_thank_strings():
    d1 = Donor("Fred Flinstone", [100, 200, 300, 400])
    d2 = Donor("James Dean", [500, 600, 700, 800])
    d3 = Donor("Jack the Ripper", [1, 2, 3, 4])
    d_list = Donors([d1, d2, d3])
    thank_notes = d_list.make_thank_notes()
    assert thank_notes == [
        'Dear Fred Flinstone, Thank you for your donation of $1000.00. These funds help save the migratory butterflies of New South East.Thank you',
        'Dear James Dean, Thank you for your donation of $2600.00. These funds help save the migratory butterflies of New South East.Thank you',
        'Dear Jack the Ripper, Thank you for your donation of $10.00. These funds help save the migratory butterflies of New South East.Thank you'
    ]
예제 #20
0
def test_save():
    dr = DonationRecords()
    dr.load("test_file.json")
    dr.add_donor(Donor("Jane Doe", [777.77, 888.88]))
    dr.save("test_file_r1.json")
    dr.load("test_file.json")
    d1 = dr.get_donor("Jane Doe")
    assert d1 is None
    dr.load("test_file_r1.json")
    d1 = dr.get_donor("Jane Doe")
    d2 = Donor("Jane Doe", [777.77, 888.88])
    assert d1 == d2
예제 #21
0
def test_add_new_donor():
    d1 = Donor("Fred Flinstone")
    d2 = Donor("James Dean")
    d3 = Donor("Jack the Ripper")
    d_list = Donors([d1, d2, d3])
    d4 = Donor("Mickey Mouse")
    d_list.append(d4)
    assert d_list.donor_list[3].name == "Mickey Mouse"
    d_list.donor_list[3].add_donation(100)
    assert d_list.donor_list[3].donation == [
        100,
    ]
def test_donor_email_single(capsys):
    d = Donor()
    name = 'Pam Beesley'
    donation = 100.00
    dstr = ('\n\nDear Pam Beesley,\n\n'
            '        Thank you for your very kind'
            ' donation of $100.00.\n\n'
            '        It will be put to very good use.\n\n'
            '               Sincerely,\n'
            '                  -The Team\n\n\n')
    d.donor_email(name, donation)
    captured = capsys.readouterr()
    assert captured.out == dstr
예제 #23
0
def test_make_report():
    d1 = Donor("Fred Flinstone", [100, 200, 300, 400])
    d2 = Donor("James Dean", [500, 600, 700, 800])
    d3 = Donor("Jack the Ripper", [1, 2, 3, 4])
    d_list = Donors([d1, d2, d3])
    report = d_list.make_report()
    assert d_list.make_headers_string(
    ) == 'Donor Names          Total Given     Num Gifts       Average Gifts  '
    assert report.startswith('Donor')
    assert 'Fred Flinstone       $1000.00         4               $250.00' in report
    assert 'James Dean           $2600.00         4               $650.00' in report
    assert 'Jack the Ripper      $10.00           4               $2.50' in report
    assert report.endswith('\n')
예제 #24
0
def test_most_recent_donation():
    a = datetime(2019, 12, 2, 23, 29, 17, 120741)
    b = datetime(2019, 12, 2, 23, 28, 25, 610351)
    c = datetime(2019, 12, 2, 23, 28, 29, 310351)
    donor = Donor('Bill Murray', [{
        'amount': 20.00,
        'date': a
    }, {
        'amount': 30.00,
        'date': b
    }, {
        'amount': 40.00,
        'date': c
    }])
    assert donor.most_recent_donation() == (20.00, a)
예제 #25
0
def test_add():
    """test adding donor to database"""

    Donor_Collection.delete().execute()
    Donation_Amount.delete().execute()

    for item in Donors:
        donor = Donor(item[PERSON_NAME], item[DONATION_LIST])
        collection.add_update(donor)

    try:
        database.connect()
        database.execute_sql('PRAGMA foreign_keys = ON;')

        for donor in Donors:
            db_donor = Donor_Collection.get(
                Donor_Collection.person_name == donor[PERSON_NAME])
            assert (db_donor.person_name == donor[PERSON_NAME])
            assert (db_donor.donation_count == len(donor[DONATION_LIST]))
            assert (db_donor.total_amount == sum(donor[DONATION_LIST]))

            db_amounts = Donation_Amount.select().where(
                Donation_Amount.from_person == donor[PERSON_NAME])
            assert (len(db_amounts) == len(donor[DONATION_LIST]))
            for amount in db_amounts:
                assert (amount.donation_amount in donor[DONATION_LIST])

    except Exception as e:
        assert (False)
    finally:
        database.close()
예제 #26
0
def test_load():
    donors.load("test_donors.json")
    donor = donors.find_donor("Bill Ted")
    assert donor is None
    donor = donors.find_donor("Json Donor 1")
    donor2 = Donor("Json Donor 1", [4.50, 3.45])
    assert donor == donor2
예제 #27
0
def test_list_donors():
    """Test displaying donors in the DMS."""
    dr = Donor.list_donors()

    assert "Below is the current donor list:" in dr
    assert "Jimmy Nguyen" in dr
    assert "Elizabeth McBath" in dr
예제 #28
0
def main():
    choice = ''
    selection = 'Select an option (1, 2, 3, or 4) ===>'
    switch_function_dict = {'1': add_update_donor, '2': create_report, '3': delete_donor, '4': quit}

    database.connect()
    database.execute_sql('PRAGMA foreign_keys = ON;')

    # update local list of donors
    for db_donor in Donor_Collection:
        amounts = []
        amount_list = Donation_Amount.select().where(Donation_Amount.from_person == db_donor.person_name)
        for amount in amount_list:
            amounts.append(amount.donation_amount)
        donor = Donor(db_donor.person_name, amounts)
        collection.insert_donor(donor)

    database.close()
    while True:
        # Display main menu
        display_main_menu()
        choice = input(selection)
        try:
            if switch_function_dict[choice]() == 'exit menu':
                break
        except KeyError:
            print("Please enter 1, 2, 3, or 4")
예제 #29
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")
예제 #30
0
def test_delete():
    """ test deleting a donor from database"""

    Donor_Collection.delete().execute()
    Donation_Amount.delete().execute()

    for item in Donors:
        donor = Donor(item[PERSON_NAME], item[DONATION_LIST])
        collection.add_update(donor)

    # delete donor John
    collection.delete('John')

    try:
        database.connect()
        database.execute_sql('PRAGMA foreign_keys = ON;')

        donor = Donor_Collection.select().where(
            Donor_Collection.person_name == 'John')
        assert (False)

    except Exception as e:
        pass
    finally:
        database.close()