test_link_reader.py 2.21 KiB
from unittest import TestCase
from pymemri import PodClient
from link_reader.data.schema import LinkPreview, Photo, Edge, Link
from link_reader.plugin import LinkReader
from tests.loader import load_mock_data
from linkpreview import link_preview
import requests
class LinkReaderTest(TestCase):
    client = PodClient()
    plugin = LinkReader(client=client)
    def test_link_reader(self):
        link_collectors = load_mock_data("link_collector")
        for link in link_collectors:
            edges = []
            files = []
            creates = []
            link_item = Link(link=link["link"])
            self.plugin.client.create(link_item)
            preview = link_preview(link["link"])
            link_reader_item = LinkPreview(
                title=preview.title,
                description=preview.description,
                force_title=preview.force_title,
                site_name=preview.site_name,
            creates.append(link_reader_item)
            try:
                image = requests.get(preview.image)
                image_byte = image.content
                img = Photo.from_bytes(image_byte)
                creates.extend([img, img.file[0]])
                edges.extend(
                        Edge(img, img.file[0], "file"),
                        Edge(link_reader_item, img, "image"),
                files.append(img.data)
            except:
                pass
            try:
                absolute_image = requests.get(preview.absolute_image)
                absolute_image_byte = absolute_image.content
                absolute_img = Photo.from_bytes(absolute_image_byte)
                creates.extend([absolute_img, absolute_img.file[0]])
                edges.extend(
                        Edge(absolute_img, absolute_img.file[0], "file"),
                        Edge(link_reader_item, absolute_img, "absolute_image"),
                files.append(absolute_img.data)
            except:
                pass
            self.client.bulk_action(create_items=creates, create_edges=edges)
            for f in files:
                self.client.upload_file(f)