예제 #1
0
def test_parse_entries_some_complete(incomplete_ods_file_name):
    ssp = SpreadsheetParser(incomplete_ods_file_name)
    tier_name = 'tier A'
    entries = ssp._parse_entries(ssp.spreadsheet.sheets[tier_name], tier_name)

    assert len(entries) == 2
    assert all([isinstance(e, Entry) for e in entries])
예제 #2
0
def test_parse_entry_incomplete_entry(incomplete_ods_file_name, row_number):
    ssp = SpreadsheetParser(incomplete_ods_file_name)
    tier_name = 'tier A'
    entry = ssp._parse_entry(ssp.spreadsheet.sheets[tier_name].row(row_number),
                             row_number, tier_name)

    assert entry is None
예제 #3
0
def test_parse_header_yes_full_entry(perfect_ods_file_name):
    ssp = SpreadsheetParser(perfect_ods_file_name)
    tier_name = 'tier S'
    header = ssp._parse_header(ssp.spreadsheet.sheets[tier_name], tier_name)

    assert isinstance(header, Image)
    assert header.image_source == 'Google Drive'
    assert header.image_url == ('https://drive.google.com/uc?id='
                                '1V3vK8HA4hrdby7VHkQwrb6KvlMcXEPTA')
예제 #4
0
def test_parse_tier(perfect_ods_file_name):
    ssp = SpreadsheetParser(perfect_ods_file_name)
    tier_name = 'tier B'
    tier = ssp._parse_tier(tier_name)

    assert len(tier) == 2
    assert 'header' in tier
    assert 'entries' in tier
    assert isinstance(tier['header'], Image) or tier['header'] is None
    assert all([isinstance(e, Entry) for e in tier['entries']])
예제 #5
0
def test_missing_tier_sheets(mocker, epmty_ods_file_name, tier_names,
                             sheets_names, expected_missing):
    mocker.patch.object(SpreadsheetParser, '__init__', return_value=None)
    ss = mocker.patch.object(SpreadsheetParser, 'spreadsheet', create=True)
    ss.sheets.names.return_value = sheets_names

    ssp = SpreadsheetParser(epmty_ods_file_name)
    missing = ssp._check_for_missing_tier_sheets(tier_names)

    assert missing == expected_missing
예제 #6
0
def test_parse_entry_complete_entry(perfect_ods_file_name):
    ssp = SpreadsheetParser(perfect_ods_file_name)
    tier_name = 'tier S'
    entry = ssp._parse_entry(ssp.spreadsheet.sheets[tier_name].row(4), 4,
                             tier_name)

    assert isinstance(entry, Entry)
    assert entry.mal_url == 'https://myanimelist.net/character/142314/Zeke'
    assert entry.name == 'Zeke'
    assert entry.image_source == 'Google Drive'
    assert entry.image_url == ('https://drive.google.com/uc?id='
                               '1olKc6TBJ1kPJa7cKWVp7dNZFwHb_0k8Z')
예제 #7
0
def test_parse_settings(mocker, perfect_ods_file_name):
    expected_settings = {
        'tier_names':
        ['tier S', 'tier A', 'tier B', 'tier C', 'tier D', 'tier E', 'tier F'],
        'entries_per_row':
        4,
    }
    real_parse_settings = SpreadsheetParser._parse_settings
    mocker.patch.object(SpreadsheetParser, '_parse_settings')
    ssp = SpreadsheetParser(perfect_ods_file_name)
    ssp._parse_settings = real_parse_settings
    settings = ssp._parse_settings(ssp)

    assert settings == expected_settings
예제 #8
0
def test_read_ods_file_not_exists(ods_file_path):
    with pytest.raises(FileNotFoundError):
        SpreadsheetParser(ods_file_path)
예제 #9
0
def settings_ssp_with_mocked_parse_settings(mocker, settings_ods_file_name):
    mocker.patch.object(SpreadsheetParser, '_parse_settings')
    return SpreadsheetParser(settings_ods_file_name)
예제 #10
0
def empty_ssp_with_mocked_parse_settings(mocker, epmty_ods_file_name):
    mocker.patch.object(SpreadsheetParser, '_parse_settings')
    return SpreadsheetParser(epmty_ods_file_name)
예제 #11
0
def test_parse_tiers(perfect_ods_file_name):
    ssp = SpreadsheetParser(perfect_ods_file_name)
    ssp.parse_tiers()

    assert set(ssp.settings['tier_names']) == set(ssp.tiers.keys())
    assert all(['header' in t and 'entries' in t for t in ssp.tiers.values()])
예제 #12
0
def test_parse_header_no(incomplete_ods_file_name):
    ssp = SpreadsheetParser(incomplete_ods_file_name)
    tier_name = 'tier S'
    header = ssp._parse_header(ssp.spreadsheet.sheets[tier_name], tier_name)

    assert header is None
예제 #13
0
def test_parse_header_yes_incomplete_entry(incomplete_ods_file_name,
                                           tier_name):
    ssp = SpreadsheetParser(incomplete_ods_file_name)
    with pytest.raises(exceptions.HeaderIncompleteError):
        ssp._parse_header(ssp.spreadsheet.sheets[tier_name], tier_name)