Esempio n. 1
0
def test_donor_list_persist(tmpdir, capsys):
    dl = DonorList()
    dl.add_donor("Stuart")
    dl.add_donor("Cayce")

    stuart = dl.get_donor("Stuart")
    cayce = dl.get_donor("Cayce")

    stuart.add_donation(25)
    stuart.add_donation(50)

    cayce.add_donation(100)
    cayce.add_donation(50)

    dc = DonorCli(dl)

    p = tmpdir.mkdir('sub')
    with p.as_cwd():
        dc.save_donations()
        captured = capsys.readouterr()
        assert captured.out == 'Successfully saved donors to JSON file.\n'

        tempFiles = [f for f in listdir(p) if isfile(join(p, f))]
        assert tempFiles == ['donorList.json']

        dc.load_donations()
        captured = capsys.readouterr()
        assert captured.out == 'Successfully loaded donors from JSON file.\n'

        stuart = dl.get_donor("Stuart")
        cayce = dl.get_donor("Cayce")

        assert stuart.donations == [25, 50]
        assert cayce.donations == [100, 50]
def test_donor_list_donor_names(capsys):
    dl = DonorList()
    dl.add_donor("Stuart")
    dl.add_donor("Cayce")

    dl.get_donor_names()

    captured = capsys.readouterr()
    assert captured.out == "Stuart\nCayce\n"
def test_donor_list_compose_thank_you(capsys):
    dl = DonorList()
    dl.add_donor("Stuart")

    stuart = dl.get_donor("Stuart")
    stuart.add_donation(50)

    print(dl.compose_thank_you(stuart))

    captured = capsys.readouterr()
    assert captured.out  == "Dear Stuart, "\
        "thanks so much for your generous donations in the amount of: $50.\n"
def test_donor_list_generate_rollup():
    dl = DonorList()
    dl.add_donor("Stuart")

    stuart = dl.get_donor("Stuart")

    stuart.add_donation(25)
    stuart.add_donation(50)

    assert stuart.donations == [25, 50]

    dl.generate_rollup()

    assert stuart.rollup == {"number": 2, "total": 75, "average": 37.50}
def test_donor_list_generate_table(capsys):
    dl = DonorList()
    dl.add_donor("Stuart")
    dl.add_donor("Cayce")

    stuart = dl.get_donor("Stuart")
    cayce = dl.get_donor("Cayce")

    stuart.add_donation(25)
    stuart.add_donation(50)

    cayce.add_donation(100)
    cayce.add_donation(50)

    dl.generate_table()

    captured = capsys.readouterr()
    assert captured.out == 'Donor Name          Num Gifts      Total Given'\
        '    Average Gift   \n'\
        '_________________________________________________________________\n'\
        'Stuart               2              75             37.5           \n'\
        'Cayce                2              150            75.0           \n'\
def test_donor_list_generate_letters(tmpdir, capsys):
    dl = DonorList()
    dl.add_donor("Stuart")
    dl.add_donor("Cayce")

    stuart = dl.get_donor("Stuart")
    cayce = dl.get_donor("Cayce")

    stuart.add_donation(25)
    stuart.add_donation(50)

    cayce.add_donation(100)
    cayce.add_donation(50)

    p = tmpdir.mkdir('sub')
    with p.as_cwd():
        dl.generate_letters()
        captured = capsys.readouterr()
        assert captured.out == 'Letters generated: \n'\
            'Cayce.txt\n'\
            'Stuart.txt\n'\

    tempFiles = [f for f in listdir(p) if isfile(join(p, f))]
    assert tempFiles == ['Cayce.txt', 'Stuart.txt']
def test_donor_list_add_donor():
    dl = DonorList()

    with pytest.raises(Exception) as excinfo:
        dl.add_donor()
    assert str(excinfo.value) == "add_donor() missing 1 required positional "\
                                 "argument: 'name'"
    dl.add_donor("Stuart")

    assert dl.donors["Stuart"].name == "Stuart"
    assert dl.donors["Stuart"].donations == []

    dl.add_donor("Cayce")

    assert dl.donors["Cayce"].name == "Cayce"
    assert dl.donors["Cayce"].donations == []
def test_donor_list_get_donations():
    dl = DonorList()
    dl.add_donor("Stuart")

    assert dl.get_donations("Cayce") == "Donor not found."
    assert dl.get_donations("Stuart") == []