def test_name_for():
    """
    Test the name mapping...
    """
    verification = json.load(open(
        'tests/data/names.json'
    ))

    parser = CouncillorImporter(None)
    all_names = verification.values()
    for in_pdf, from_scraper in verification.items():
        assert from_scraper == parser.name_for(in_pdf, all_names)
def test_available():
    with vcr.use_cassette('build/fixtures/available_councillors.yaml'):
        scraper = CouncillorImporter(None)
        result = scraper.available()
        verification = json.load(open(
            'tests/data/names.json'
        ))

        all_names = result.keys()
        assert 100 == len(all_names)

        for expected in all_names:
            assert expected in verification.values()
def test_importer(mockdb):
    # Create test data...
    mockdb['councillors'].insert({'fullname': 'Ruedi Rechsteiner',
                                  'fraction': 'SP', 'votings': []})

    with vcr.use_cassette('build/fixtures/councillor.yaml'):
        importer = CouncillorImporter(mockdb)
        importer.parse()

    ruedi = mockdb['councillors'].find_one({'fullname': 'Ruedi Rechsteiner'})

    assert ruedi['firstname'] == 'Rudolf'
    assert ruedi['lastname'] == 'Rechsteiner'

    assert ruedi['zip'] == '4058'
    assert ruedi['title'] == 'Dr. rer. pol.'
    assert ruedi['phone_business'] == '061 222 24 78'
    assert ruedi['phone_mobile'] is None
    assert ruedi['phone_private'] is None
    assert ruedi['fax_business'] is None
    assert ruedi['fax_private'] is None
    assert ruedi['job'] == 'Inhaber Beratungsbüro'
    assert ruedi['locality'] == 'Basel'
    assert ruedi['birthdate'] == datetime.datetime(1958, 10, 27)
    assert ruedi['employer'] == 'Beratungsbüro re-solution.ch, Inhaber'
    assert ruedi['website'] == 'www.rechsteiner-basel.ch'
    assert ruedi['address'] == 'Römergasse 30'

    # Assert commissions
    assert 1 == len(ruedi['commissions'])
    assert 'Wirtschafts- und Abgabekommission (WAK)' == ruedi['commissions'][0]

    assert 1 == len(ruedi['member_state'])
    assert 5 == len(ruedi['member_nonstate'])

    # Verify the avatar was downloaded
    assert os.path.exists(os.path.join('build/avatars', str(ruedi['avatar'])))