Exemplo n.º 1
0
    def test_makeFromScrapees_shouldReturnEmptyListWhenNoScrapeesGiven(self):
        # Given
        sut = ScraperFactory()

        # When
        scrapers: List[Scraper] = sut.makeFromScrapees(scrapees=[],
                                                       scrapeeRepo=Mock(),
                                                       session=Mock(),
                                                       requestClass=Mock,
                                                       messenger=Mock())

        # Then
        self.assertIsInstance(scrapers, list)
        self.assertEqual(0, len(scrapers))
Exemplo n.º 2
0
    def test_makeFromScrapees_shouldReturnEmptyListWhenNoMatchingScrapers(
            self):
        # Given
        sut = ScraperFactory()
        scrapee = Mock(spec_set=Scrapable)
        scrapee.url = "https://should-lead-to-no-matching-scrapers.com"

        # When
        scrapers: List[Scraper] = sut.makeFromScrapees(scrapees=[scrapee],
                                                       scrapeeRepo=Mock(),
                                                       session=Mock(),
                                                       requestClass=Mock,
                                                       messenger=Mock())

        # Then
        self.assertIsInstance(scrapers, list)
        self.assertEqual(0, len(scrapers))
Exemplo n.º 3
0
    async def _setScrapers(self):
        if not self.shops:
            raise AttributeError("Unable to create scrapers: Shops are not set.")
        if not self.session:
            raise AttributeError("Unable to create scrapers: Session not set.")

        messengerRequest: Request = AioHttpRequest(session=self.session)
        discordMessenger = msn.Discord(request=messengerRequest, repo=self.discordMessengerRepo)

        scraperFactory = ScraperFactory()
        self.scrapers = scraperFactory.makeFromScrapees(
            scrapees=self.shops,
            scrapeeRepo=self.shopRepo,
            session=self.session,
            requestClass=AioHttpRequest,
            messenger=discordMessenger)

        if not self.scrapers:
            raise LookupError("No scrapers were generated.")
Exemplo n.º 4
0
    def test_makeFromScrapees(self):
        # Given
        url1 = "https://scrapee-1.com"
        url2 = "https://scrapee-2.com"

        class Scraper1(Scraper):
            URL: str = url1

            def run(self) -> None:
                pass

        class Scraper2(Scraper):
            URL: str = url2

            def run(self) -> None:
                pass

        sut = ScraperFactory()
        sut.register(class_=Scraper1)
        sut.register(class_=Scraper2)

        scrapee1 = Mock(spec_set=Scrapable)
        scrapee1.url = url1
        scrapee2 = Mock(spec_set=Scrapable)
        scrapee2.url = url2
        scrapees = [scrapee1, scrapee2]

        # When
        scrapers: List[Scraper] = sut.makeFromScrapees(scrapees=scrapees,
                                                       scrapeeRepo=Mock(),
                                                       session=Mock(),
                                                       requestClass=Mock,
                                                       messenger=Mock())

        # Then
        self.assertIsInstance(scrapers, list)
        self.assertEqual(2, len(scrapers))