示例#1
0
class TestDonor(unittest.TestCase):
    """Unit tests for the Donor class"""
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.test_name = 'Test Donor'
        self.test_dons = [100, 500, 50.05]
        self.test_total = sum(self.test_dons)
        self.test_ave = self.test_total / len(self.test_dons)

    def setUp(self):
        self.donor = Donor(self.test_name, self.test_dons)

    def tearDown(self):
        pass

    def test_get_donations(self):
        """Test donations attribute"""
        self.assertEqual(self.donor.donations, self.test_dons)

    def test_set_donations(self):
        """Test setting donations attribute"""
        with self.assertRaises(AttributeError):
            self.donor.donations = [100, 20]

    def test_get_num_donations(self):
        """Test num_donations attribute"""
        self.assertEqual(self.donor.num_donations, len(self.test_dons))

    def test_set_num_donations(self):
        """Test setting num_donations attribute"""
        with self.assertRaises(AttributeError):
            self.donor.num_donations = 4

    def test_get_total_donations(self):
        """Test total_donations attribute"""
        self.assertEqual(self.donor.total_donations, self.test_total)

    def test_set_total_donations(self):
        """Test setting total_donations attribute"""
        with self.assertRaises(AttributeError):
            self.donor.total_donations = 100

    def test_get_ave_donations(self):
        """Test average_donations attribute"""
        self.assertEqual(self.donor.average_donations, self.test_ave)

    def test_set_ave_donations(self):
        """Test setting average_donations attribute"""
        with self.assertRaises(AttributeError):
            self.donor.average_donations = 100

    def test_add_donation(self):
        """Test add_donation method"""
        donation = random.randint(0, 10000.0)
        self.donor.add_donation(donation)
        self.assertEqual(self.donor.donations, self.test_dons + [donation])
        self.assertEqual(self.donor.num_donations, len(self.test_dons) + 1)
        self.assertEqual(self.donor.total_donations, self.test_total + donation)
        self.assertEqual(self.donor.average_donations,
                         (self.test_total + donation) / (len(self.test_dons) + 1))
示例#2
0
 def add_donation(self, name, amt):
     d = self.get_donor(name)
     if d is None:
         d = Donor(name, amt)
         self.add_donor(d)
     else:
         d.add_donation(amt)
示例#3
0
def test_copy():
    d = Donor("Mark", 10)
    d.add_donation(30)
    d.add_donation(50)

    d2 = d.copy(filterFn=lambda d: d > 20 and d < 40, mapFn=lambda d: d * 10)
    assert d2._donations == [300]
示例#4
0
def test_total_donations():
    """ Test total_donations property """
    d1 = Donor('Maggie', 1000, 2000, 3000)
    assert d1.total_donations == 6000
    d1.add_donation(4000)
    assert d1.total_donations == 10000
    d1.remove_donation(1000)
    assert d1.total_donations == 9000
示例#5
0
def test_average_donation():
    """ Test average_donation property """
    d1 = Donor('Maggie', 1000, 2000, 3000)
    assert d1.average_donation == 2000
    d1.add_donation(4000)
    assert d1.average_donation == 2500
    d1.remove_donation(1000)
    assert d1.average_donation == 3000
示例#6
0
def test_donor_add_donation():
    d1 = Donor("Bob", [Donation(100)])

    d1.add_donation(200)
    curr_time = datetime.datetime.now()

    # Check length of list, and attributes of the added donation object
    assert len(d1.donations_list) == 2
    assert d1.donations_list[1].amount == 200
    assert d1.donations_list[1].date == curr_time
def test_add_donation(): 
    """
    Test addition of a donation amount to the 
    donor object, using the add_donation() method
    in the Donor class
    """

    donor = Donor() 
    donor.add_donation(100)
    assert 100 in donor.donation_history
def test_thank_you(): 
    """
    Test thank_you function, in Donor class
    that sends thank you email to donor for donation 
    """

    donor = Donor()
    donor.fname = 'Erick'
    donor.lname = 'Smith'
    amount = 100
    donor.add_donation(amount)
    email = donor.thank_you_email()
    assert email == f"Thank you {donor.fname} {donor.lname} for your generous donation of ${amount:.2f} dollars"
def test_add_donor(): 
    """
    Test the adding of a donor object to the DonorDb, 
    via the add_donor() method in the DonorDb class
    """

    donor = Donor()
    donor.fname = 'Erick'
    donor.lname = 'Smith'
    donor.add_donation(100)

    db = DonorDb() 
    db.add_donor(donor)
    key = donor.fname + ' ' + donor.lname
    assert key in db.database
def test_challenge():
    donors = Donors()
    d1 = Donor("Mark", 50)
    d1.add_donation(90)
    d1.add_donation(110)
    d2 = Donor("Mary", 80)
    d2.add_donation(95)
    d2.add_donation(115)
    donors.add_donor(d1)
    donors.add_donor(d2)
    copy = donors.challenge(3, min_amt=85, max_amt=100)
    assert copy.get_donor("Mark").donations == (270, )
    assert copy.get_donor("Mary").donations == (285, )
def test_letter(): 
    """
    Test the a single formatted letter to an
    individual donor, in the Donor class, 
    letter() method.
    """

    donor = Donor()
    donor.fname = 'Erick'
    donor.lname = 'Smith'
    donor.add_donation(100)

    expected_template = f"""Dear {donor.fname + ' ' + donor.lname},
        Thank you for your kind donation of ${donor.donation_history[-1]}.

        It will be put to very good use.

        Sincerely,

        - The Cloud Squad"""

    assert expected_template == donor.letter()
示例#12
0
def test_add_donation1():
    """ Test ability to add donations to donor """
    d1 = Donor('Maggie')
    d2 = Donor('Doug', 1000)
    d3 = Donor()
    d1.add_donation(1000)
    d2.add_donation(2000)
    d2.add_donation(3000)
    d3.add_donation(5000)
    assert 1000 in d1.donations
    assert 1000 in d2.donations
    assert 2000 in d2.donations
    assert 3000 in d2.donations
    assert 2000 not in d1.donations
    assert 5000 in d3.donations
 def set_data(self):
     donor = Donor('id', 'f_name', 'L_name', 'M')
     donor.add_donation('01', 'Mike', 'Lance', 'M')
     return donor
示例#14
0
def test_total_amt():
    d = Donor("Mark", 10)
    assert d.total_amt == 10
    d.add_donation(2.34)
    assert floating_equals(d.total_amt, 12.34)
示例#15
0
def test_avg_donations():
    d = Donor("Mark", 10)
    assert floating_equals(d.avg_donation, 10.0)
    d.add_donation(20)
    assert floating_equals(d.avg_donation, 15.0)
示例#16
0
def test_num_donations():
    d = Donor("Mark", 10)
    assert d.num_donations == 1
    d.add_donation(20)
    assert d.num_donations == 2
示例#17
0
def test_add_donation():
    d = Donor("Mark", 10)
    d.add_donation(20)
    assert d.donations == (10, 20)
示例#18
0
        response = input(prompt)

        try:
            dict_value = dispatch_dict[response]
        except KeyError:
            print("Invalid input, please try again.\n")
        else:
            if dict_value(charity) == 'quit':
                sys.exit()


if __name__ == '__main__':

    # TEST DATA
    new_donor1 = Donor("Fred")
    new_donor1.add_donation(100)
    new_donor1.add_donation(1000)
    new_donor1.add_donation(10000)

    new_donor2 = Donor("Bob")
    new_donor2.add_donation(200)
    new_donor2.add_donation(2000)
    new_donor2.add_donation(20000)

    new_donor3 = Donor("Todd")
    new_donor3.add_donation(300)
    new_donor3.add_donation(3000)
    new_donor3.add_donation(30000)

    new_donor4 = Donor("Sally")
    new_donor4.add_donation(400)
示例#19
0
def setup_initial_charity():
    """Helper function for setting up charity for unit tests"""
    new_donor1 = Donor("Fred")
    new_donor1.add_donation(100)
    new_donor1.add_donation(1000)
    new_donor1.add_donation(10000)

    new_donor2 = Donor("Bob")
    new_donor2.add_donation(200)
    new_donor2.add_donation(2000)
    new_donor2.add_donation(20000)

    new_charity = Charity("Foundation")
    new_charity.add_donor(new_donor1.donor_name, new_donor1.donations_list)
    new_charity.add_donor(new_donor2.donor_name, new_donor2.donations_list)
    return new_charity
示例#20
0
def test_charity_add_donor():
    new_donor1 = Donor("Fred")
    new_donor1.add_donation(100)
    new_donor1.add_donation(1000)
    new_donor1.add_donation(10000)

    new_donor2 = Donor("Bob")
    new_donor2.add_donation(200)
    new_donor2.add_donation(2000)
    new_donor2.add_donation(20000)

    # Checks init()
    new_charity = Charity("Foundation")
    assert new_charity.charity_name == "Foundation"
    assert new_charity.donors_dict == {}

    # Checks add_donor()
    new_charity.add_donor(new_donor1.donor_name, new_donor1.donations_list)
    new_charity.add_donor(new_donor2.donor_name, new_donor2.donations_list)

    assert new_charity.donors_dict["Fred"].donor_name == "Fred"
    assert new_charity.donors_dict["Fred"].donations_list == new_donor1.donations_list

    assert new_charity.donors_dict["Bob"].donor_name == "Bob"
    assert new_charity.donors_dict["Bob"].donations_list == new_donor2.donations_list

    # Checks print_total_donations()
    assert new_charity.print_total_donations() == "Donor {} : Total amount is {}\nDonor {} : Total amount is {}\n"\
                                                .format("Fred", 11100, "Bob", 22200)