def test_print_report(self): mailroom = Mailroom() sample_donor_data = \ {'Mark Zuckerberg':[5000.50,1089.90,750.45], 'Jeff Bezos':[700.90,900.99], 'Paul Allen':[11100.80], 'Joanne K Rowling':[1199.90,9878.12]} mailroom.populate_donors_from_dict(sample_donor_data) self.assertEqual(4,mailroom.donor_count) donors = ['Mark Zuckerberg','Jeff Bezos','Paul Allen','Joanne K Rowling'] for index,name in enumerate(mailroom.donor_names): self.assertEqual(name,donors[index]) capturedOutput = io.StringIO() # Create StringIO object sys.stdout = capturedOutput # and redirect stdout. mailroom.create_report() sys.stdout = sys.__stdout__ #Reset Redirect report_text = \ '''Donor Name | Total Given | Num Gifts | Average Gift\n------------------------------------------------------------------------\nMark Zuckerberg $ 6840.85 3 $ 2280.28\nJeff Bezos $ 1601.89 2 $ 800.94\nPaul Allen $ 11100.80 1 $ 11100.80\nJoanne K Rowling $ 11078.02 2 $ 5539.01''' self.assertEqual(capturedOutput.getvalue().strip(), report_text.strip()) #Remove all the donor name text files created for filename in os.listdir('.'): if filename.endswith('.txt'): donorname = filename[:-4] if donorname in mailroom.donor_data_dict.keys(): os.remove(filename)
def test_populate_donors_from_invalid_data_dict(self): mailroom = Mailroom() sample_donor_data = \ {'Mark Zuckerberg':[5000.50,1089.90,750.45], 'Jeff Bezos':[700.90,'not a number'], 'Paul Allen':[11100.80], 'Joanne K Rowling':[1199.90,9878.12]} with self.assertRaises(ValueError): mailroom.populate_donors_from_dict(sample_donor_data)
def test_create_mailroom_populate_donors_from_dict(self): mailroom = Mailroom() sample_donor_data = \ {'Mark Zuckerberg':[5000.50,1089.90,750.45], 'Jeff Bezos':[700.90,900.99], 'Paul Allen':[11100.80], 'Joanne K Rowling':[1199.90,9878.12]} mailroom.populate_donors_from_dict(sample_donor_data) self.assertEqual(4,mailroom.donor_count) donors = ['Mark Zuckerberg','Jeff Bezos','Paul Allen','Joanne K Rowling'] for index,name in enumerate(mailroom.donor_names): self.assertEqual(name,donors[index])
def test_send_letters_to_everyone(self): mailroom = Mailroom() sample_donor_data = \ {'Mark Zuckerberg':[5000.50,1089.90,750.45], 'Jeff Bezos':[700.90,900.99], 'Paul Allen':[11100.80], 'Joanne K Rowling':[1199.90,9878.12]} mailroom.populate_donors_from_dict(sample_donor_data) self.assertEqual(4,mailroom.donor_count) donors = ['Mark Zuckerberg','Jeff Bezos','Paul Allen','Joanne K Rowling'] for index,name in enumerate(mailroom.donor_names): self.assertEqual(name,donors[index]) mailroom.send_letters_to_everyone() for filename in os.listdir('.'): if filename.endswith('.txt'): donorname = filename[:-4] self.assertIn(donorname, mailroom.donor_data_dict.keys())
def test_mailroom_get_donations_for_donor(self): mailroom = Mailroom() sample_donor_data = \ {'Mark Zuckerberg':[5000.50,1089.90,750.45], 'Jeff Bezos':[700.90,900.99], 'Paul Allen':[11100.80], 'Joanne K Rowling':[1199.90,9878.12]} mailroom.populate_donors_from_dict(sample_donor_data) self.assertEqual(4,mailroom.donor_count) donors = ['Mark Zuckerberg','Jeff Bezos','Paul Allen','Joanne K Rowling'] for index,name in enumerate(mailroom.donor_names): self.assertEqual(name,donors[index]) donations_list = mailroom.donations_for_donor('Mark Zuckerberg') expected_donations = [5000.50,1089.90,750.45] self.assertEqual(len(donations_list), len(expected_donations)) for index in range(0,len(donations_list)): self.assertEqual(donations_list[index], expected_donations[index])