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])
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
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')
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']])
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
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')
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
def test_read_ods_file_not_exists(ods_file_path): with pytest.raises(FileNotFoundError): SpreadsheetParser(ods_file_path)
def settings_ssp_with_mocked_parse_settings(mocker, settings_ods_file_name): mocker.patch.object(SpreadsheetParser, '_parse_settings') return SpreadsheetParser(settings_ods_file_name)
def empty_ssp_with_mocked_parse_settings(mocker, epmty_ods_file_name): mocker.patch.object(SpreadsheetParser, '_parse_settings') return SpreadsheetParser(epmty_ods_file_name)
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()])
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
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)