def test_create_short_dict_makes_thumb_bigger_75(self): builder = SubmissionBuilder(thumb_size=75) big_thumb_link = builder.thumbnail_url.replace("@75-", "@1600-") submission = FASubmission.from_short_dict(builder.build_search_json()) assert submission.thumbnail_url == big_thumb_link
async def test_get_browse_page_specify_page(requests_mock): builder = SubmissionBuilder() api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get(f"http://example.com/browse.json?page=5", json=[builder.build_search_json()]) results = await api.get_browse_page(5) assert len(results) == 1 assert isinstance(results[0], FASubmissionShort) assert results[0].submission_id == builder.submission_id
async def test_get_search_results_specified_page(requests_mock): builder = SubmissionBuilder() search = "deer" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/search.json?full=1&perpage=48&q={search}&page=2", json=[builder.build_search_json()]) results = await api.get_search_results(search, 2) assert len(results) == 1 assert isinstance(results[0], FASubmissionShort) assert results[0].submission_id == builder.submission_id
def test_create_from_short_dict(self): builder = SubmissionBuilder() submission = FASubmission.from_short_dict(builder.build_search_json()) assert isinstance(submission, FASubmissionShort) assert submission.submission_id == builder.submission_id assert submission.link == builder.link assert submission.thumbnail_url == builder.thumbnail_url assert submission.title == builder.title assert submission.author.profile_name == builder.author.profile_name assert submission.author.name == builder.author.name assert submission.author.link == builder.author.link
async def test_get_search_results_with_extended_modifiers(requests_mock): builder = SubmissionBuilder() search = "(deer & !lion) | (goat & !tiger)" search_safe = "(deer%20&%20!lion)%20%7C%20(goat%20&%20!tiger)" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/search.json?full=1&perpage=48&q={search_safe}&page=1", json=[builder.build_search_json()]) results = await api.get_search_results(search) assert len(results) == 1 assert isinstance(results[0], FASubmissionShort) assert results[0].submission_id == builder.submission_id
async def test_get_search_results(requests_mock): post_id1 = "32342" post_id2 = "32337" builder1 = SubmissionBuilder(submission_id=post_id1) builder2 = SubmissionBuilder(submission_id=post_id2) search = "deer" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/search.json?full=1&perpage=48&q={search}&page=1", json=[builder1.build_search_json(), builder2.build_search_json()]) results = await api.get_search_results(search) assert len(results) == 2 assert isinstance(results[0], FASubmissionShort) assert isinstance(results[1], FASubmissionShort) assert results[0].submission_id == post_id1 assert results[1].submission_id == post_id2 assert results[0].link == f"https://furaffinity.net/view/{post_id1}/" assert results[1].link == f"https://furaffinity.net/view/{post_id2}/" assert results[0].thumbnail_url == builder1.thumbnail_url assert results[1].thumbnail_url == builder2.thumbnail_url
async def test_get_user_folder(requests_mock): post_id1 = "32342" post_id2 = "32337" builder1 = SubmissionBuilder(submission_id=post_id1) builder2 = SubmissionBuilder(submission_id=post_id2) username = "******" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/user/{username}/gallery.json?page=1&full=1", json=[builder1.build_search_json(), builder2.build_search_json()]) results = await api.get_user_folder(username, "gallery") assert len(results) == 2 for result in results: assert isinstance(result, FASubmissionShort) assert results[0].submission_id == post_id1 assert results[1].submission_id == post_id2 assert results[0].link == f"https://furaffinity.net/view/{post_id1}/" assert results[1].link == f"https://furaffinity.net/view/{post_id2}/" assert results[0].thumbnail_url == builder1.thumbnail_url assert results[1].thumbnail_url == builder2.thumbnail_url
async def test_get_user_folder_specified_page(requests_mock): builder = SubmissionBuilder() username = "******" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/user/{username}/gallery.json?page=2&full=1", json=[builder.build_search_json()]) results = await api.get_user_folder(username, "gallery", 2) assert len(results) == 1 assert isinstance(results[0], FASubmissionShort) assert results[0].submission_id == builder.submission_id assert results[0].link == builder.link assert results[0].thumbnail_url == builder.thumbnail_url
async def test_get_user_folder_awkward_characters(requests_mock): builder = SubmissionBuilder() username = "******" safe_username = "******" api = FAExportAPI("http://example.com/", ignore_status=True) requests_mock.get( f"http://example.com/user/{safe_username}/gallery.json?page=1&full=1", json=[builder.build_search_json()]) results = await api.get_user_folder(username, "gallery") assert len(results) == 1 assert isinstance(results[0], FASubmissionShort) assert results[0].submission_id == builder.submission_id assert results[0].link == builder.link assert results[0].thumbnail_url == builder.thumbnail_url