def test_source_google_drive_file_id(): expected_url = ('https://drive.google.com/uc' '?id=1olKc6TUJ1kPJa7cKWVp7dNZFwHb_0k8Z') image_url = '1olKc6TUJ1kPJa7cKWVp7dNZFwHb_0k8Z' image = Image('Google Drive', image_url) assert image.image_url == expected_url
def test_source_google_drive_share_link(): expected_url = ('https://drive.google.com/uc' '?id=1olKc6TUJ1kPJa7cKWVp7dNZFwHb_0k8Z') image_url = ('https://drive.google.com/file/d/' '1olKc6TUJ1kPJa7cKWVp7dNZFwHb_0k8Z/view?usp=sharing') image = Image('Google Drive', image_url) assert image.image_url == expected_url
def _parse_header(self, sheet, tier_name): header_entry = [cell.value for cell in sheet.row(1)[1:4]] if header_entry[0] == 'yes': if all(header_entry): header = Image(*header_entry[1:]) return header raise exceptions.HeaderIncompleteError( f"Incomplete header entry in sheet '{tier_name}'.") return None
def test_generate_bbcode(): bbcg = BBCodeGenerator( {'entries_per_row': 2}, { 'tier S': { 'header': None, 'entries': [ Entry('https://myanimelist.net/character/370/Ayame_Souma', 'direct URL', 'example1.com'), Entry('https://myanimelist.net/character/2455/Orochimaru', 'direct URL', 'example2.com'), ] }, 'tier A': { 'header': Image('direct URL', 'example.com'), 'entries': [ Entry('https://myanimelist.net/character/91959/Sakamoto', 'direct URL', 'example3.com'), Entry('https://myanimelist.net/character/45627/Levi', 'direct URL', 'example4.com'), Entry('https://myanimelist.net/character/164481/Mahito', 'direct URL', 'example5.com'), ] }, }, ) expected_bbcode = ( '[url=https://myanimelist.net/character/370/Ayame_Souma]' '[img]example1.com[/img][/url]' '[url=https://myanimelist.net/character/2455/Orochimaru]' '[img]example2.com[/img][/url]\n' '[img]example.com[/img]\n' '[url=https://myanimelist.net/character/91959/Sakamoto]' '[img]example3.com[/img][/url]' '[url=https://myanimelist.net/character/45627/Levi]' '[img]example4.com[/img][/url]\n' '[url=https://myanimelist.net/character/164481/Mahito]' '[img]example5.com[/img][/url]\n') bbcg.generate_bbcode() assert bbcg.bbcode == expected_bbcode
def test_generate_html(): bbcg = BBCodeGenerator( {'entries_per_row': 2}, { 'tier S': { 'header': None, 'entries': [ Entry('https://myanimelist.net/character/370/Ayame_Souma', 'direct URL', 'example1.com'), Entry('https://myanimelist.net/character/2455/Orochimaru', 'direct URL', 'example2.com'), ] }, 'tier A': { 'header': Image('direct URL', 'example.com'), 'entries': [ Entry('https://myanimelist.net/character/91959/Sakamoto', 'direct URL', 'example3.com'), Entry('https://myanimelist.net/character/45627/Levi', 'direct URL', 'example4.com'), Entry('https://myanimelist.net/character/164481/Mahito', 'direct URL', 'example5.com'), ] }, }, ) test_html_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_preview.html') with open(test_html_file, 'r') as f: expected_html = f.read() bbcg.generate_bbcode() bbcg.generate_html() assert bbcg.html == expected_html
import os import pytest from mal_tier_list_bbcode_gen.bbcodegenerator import BBCodeGenerator from mal_tier_list_bbcode_gen.entry import Entry from mal_tier_list_bbcode_gen.image import Image @pytest.mark.parametrize( "header,expected_bbcode", [ pytest.param(Image('direct URL', 'example.com'), '[img]example.com[/img]\n', id='header_exists'), pytest.param(None, '', id='header_is_none'), ], ) def test_generate_bbcode_for_header(header, expected_bbcode): bbcg = BBCodeGenerator({}, {}) bbcode = bbcg._generate_bbcode_for_header(header) assert bbcode == expected_bbcode @pytest.mark.parametrize( "entries_per_row,no_entries,expected_ends", [ pytest.param(0, 0, ['\n']), pytest.param(0, 1, ['\n']), pytest.param(1, 2, ['\n', '\n']),
def test_source_direct_url(): image_url = 'example.com/test.png' image = Image('direct URL', image_url) assert image.image_url == image_url
def test_get_bbcode(): image_url = 'example.com/test.png' expected_bbcode = f'[img]{image_url}[/img]' image = Image('direct URL', image_url) assert image.get_bbcode() == expected_bbcode
def test_source_not_valid(): with pytest.raises(exceptions.InvalidImageSourceError, match=r".*is not a valid image source.*"): Image('not valid', 'example.com/test.png')
def test_source_google_no_file_id(): image_url = ('https://drive.google.com/file/d/view?usp=sharing') with pytest.raises(exceptions.GoogleDriveSourceError): Image('Google Drive', image_url)