Пример #1
0
def test_get_donor():
    dc = DonorCollection()
    dc.add_donor("Rei", [50])
    a = dc.get_donor("Rei")
    assert a.name == "Rei"
    assert a.donations == [50]
    assert dc.get_donor("Usagi") is False
Пример #2
0
def test_add_new_donation():
    donor_collection = DC()
    # testing adding donation to a new donor
    donor_collection.add_new_donation("Jimmy Johns", 100)
    donor_collection.add_new_donation("Jimmy Johns", 200)
    # testing adding  donation to an exsiting donor
    donor_collection.add_new_donation("Jack Ma", 200)
    assert donor_collection.get_donor("Jimmy Johns").total_donations == 300
    assert donor_collection.get_donor("Jack Ma").total_donations == 2200
Пример #3
0
def test_get_donor():
    # Test that donors can be retrieved from collection
    dc = DonorCollection()
    dc.update_donor('Jason Mendoza',100.)
    d = dc.get_donor('Jason Mendoza')
    assert isinstance(d,Donor)
    assert d.name == 'Jason Mendoza'
    assert d.last_donation() == 100.
    # Should return new donor if donor does not exist
    d = dc.get_donor('New Donor')
    assert isinstance(d,Donor)
    assert d.name == 'New Donor'
Пример #4
0
def test_donorcollection_names_sorted():
    """Test names_sorted property."""
    dc = DonorCollection()
    dc.add_donor("Test User 1")
    d = dc.get_donor("Test User 1")
    for value in [1, 2, 3, 4]:
        d.add_donation(value)
    dc.add_donor("Test User 2")
    d = dc.get_donor("Test User 2")
    for value in [5, 6, 7, 8]:
        d.add_donation(value)
    assert dc.names_sorted == ["Test User 2", "Test User 1"]
Пример #5
0
def test_DonorCollection_class():
    dc = DonorCollection()
    dc.add_new_donor('Bill Gates')
    with pytest.raises(ValueError):
        dc.add_new_donor('Bill Gates')
    dc.add_donation('Bill Gates', 1000.0)
    d = dc.get_donor('Bill Gates')
    assert d.num_donations == 1
    assert d.total_donations == 1000.0
    assert d.donor_name == 'Bill Gates'
    dc.add_new_donor('Paul Allen')
    d2 = dc.get_donor('Paul Allen')
    d2.add_donation(2000.0)
    assert d2.num_donations == 1
    assert d2.total_donations == 2000.0
    assert d2.donor_name == 'Paul Allen'
def test_get_donor():
    # Test that donors can be retrieved from collection
    dc = DonorCollection()
    dc.update_donor('Meghanr Tainor', 100.0)
    d = dc.get_donor('Meghanr Tainor')
    assert d.name == 'Meghanr Tainor'
    assert d.last_donation() == 100.0
Пример #7
0
def test_update_donor():
    # Tests that new donor can be added and updated
    dc = DonorCollection()
    dc.update_donor('Jason Mendoza',100.)
    dc.update_donor('Jason Mendoza',200.)
    d = dc.get_donor('Jason Mendoza')
    assert d.last_donation() == 200.
    assert d.total_donations() == 300.
    assert d.num_donations() == 2
    assert d.average_donation() == 150.
def test_update_donor():
    # Tests that new donor can be added and updated
    dc = DonorCollection()
    dc.update_donor('Meghanr Tainor', 100.00)
    dc.update_donor('Meghanr Tainor', 200.00)
    d = dc.get_donor('Meghanr Tainor')
    assert d.last_donation() == 200.00
    assert d.total_donations() == 300.00
    assert d.num_donations() == 2
    assert d.average_donation() == 150.00
Пример #9
0
def test_add_donation():
    dc = DonorCollection()
    dc.add_donation('William Shatner', 500.25)
    d = dc.get_donor('William Shatner')
    assert d.name == 'William Shatner'
    assert d.num_of_donations == 1
    assert d.sum_of_donations == 500.25
    assert d.average_donation == 500.25

    dc.add_donation('William Shatner', 100.75)
    d = dc.get_donor('William Shatner')
    assert d.name == 'William Shatner'
    assert d.num_of_donations == 2
    assert d.sum_of_donations == 601.00
    assert d.average_donation == 300.50

    dc.add_donation('Harold Tunas', 45.00)
    d = dc.get_donor('Harold Tunas')
    assert d.name == 'Harold Tunas'
    assert d.num_of_donations == 1
    assert d.sum_of_donations == 45.00
    assert d.average_donation == 45.00
Пример #10
0
class MailroomCli():
    """
    MailroomCli: command line interface that interacts with DonorCollection
    """

    _exit_mail = False
    _dc = None

    def __init__(self):
        self._dc = DonorCollection()

    def exit_mail(self):
        self._exit_mail = True

    def print_menu(self):
        print("Object Oriented Mailroom Tasks:\n")
        print("[1] Send a Thank you to a single donor")
        print("[2] Send a Thank you to all donors (to stdout)")
        print("[3] Create a report")
        print("[4] Send letters to all donors")
        print("[9] Exit Mailroom\n")

    def prompt_donor(self):
        donor_name = input("Enter donor name ('list' for all donors) : ")
        if donor_name == 'list':
            namelist = self._dc.list_names()
            if len(namelist) > 1:
                print(namelist)
            donor_name = input("Enter donor name : ")
        while True:
            try:
                donor_amt = input("Enter donation value: ")
                try:
                    donor_amt = float(donor_amt)
                    break
                except ValueError:
                    print("Please enter a numeric donation value")
            except SyntaxError:
                print("Please enter a valid donation value")

        try:
            self._dc.add_new_donor(donor_name)
            self._dc.add_donation(donor_name, donor_amt)
        except ValueError:
            self._dc.add_donation(donor_name, donor_amt)

        return self._dc.get_donor(donor_name)

    def send_thankyou_single_donor_task(self):
        donor = self.prompt_donor()
        print(donor.generate_thankyou())

    def send_thankyou_multiple_donors_task(self):
        self._dc.generate_thankyou_all()

    def send_thankyou_multiple_donors_to_file_task(self):
        filenames = self._dc.generate_thankyou_all_to_file()
        return filenames

    def create_report_task(self):
        print(self._dc.generate_report_all())

    _task_dict = {
        9: exit_mail,
        4: send_thankyou_multiple_donors_to_file_task,
        3: create_report_task,
        2: send_thankyou_multiple_donors_task,
        1: send_thankyou_single_donor_task
    }

    def do_tasks(self):
        while not self._exit_mail:
            self.print_menu()
            response = input("Enter Mailroom Option: ")

            # Validate response
            try:
                response = int(response)
            except ValueError:
                print("Enter a number between 1-9")
                continue

            # Dispatch task based on response
            try:
                self._task_dict[response](self)
            except KeyError:
                print("Please enter a correct task number")
                continue
Пример #11
0
def test_get_donor():
    donor_collection = DC()
    donor_collection.add_donor("Jimmy Johns", 100)
    assert donor_collection.get_donor("Jimmy Johns").name == "Jimmy Johns"
    assert donor_collection.get_donor("Jimmy Johns").donations == [100]
Пример #12
0
def test_donorcollection_get_donor():
    """Test the get_donor method."""
    dc = DonorCollection()
    dc.add_donor("Test User")
    d = dc.get_donor("Test User")
    assert d.name == "Test User"
Пример #13
0
def test_get_donor():
    dc = DonorCollection()
    assert dc.get_donor('Leonard Nimoy') is None

    dc.add_donation('Leonard Nimoy', 50000.00)
    assert dc.get_donor('Leonard Nimoy') == Donor('Leonard Nimoy')