Skip to content

Commit

Permalink
Fixup: remove accidentally-merged legacy test code from main; network…
Browse files Browse the repository at this point in the history
…-active scrapers aren't supported in the v15 branch
  • Loading branch information
jayaddison committed Nov 30, 2023
1 parent acb3c48 commit de07e89
Showing 1 changed file with 0 additions and 74 deletions.
74 changes: 0 additions & 74 deletions tests/legacy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,74 +0,0 @@
import unittest
from typing import Any, Iterator, Optional, Tuple

import responses


class ScraperTest(unittest.TestCase):
maxDiff = None
test_file_name: Optional[str] = None
test_file_extension = "testhtml"
scraper_class: Any

@classmethod
def expected_requests(cls) -> Iterator[Tuple[str, str, str]]:
"""
Descriptions of the expected requests that the scraper-under-test will make, as
tuples of: HTTP method, URL, path-to-content-file
"""
filename = cls.test_file_name or cls.scraper_class.__name__.lower()
path = f"tests/test_data/{filename}.{cls.test_file_extension}"
yield responses.GET, "https://test.example.com", path

@classmethod
def setUpClass(cls):
if cls == ScraperTest:
# Only modify setUpClass if subclass of ScraperTest
return super().setUpClass()

with responses.RequestsMock() as rsps:
start_url = None
for method, url, path in cls.expected_requests():
start_url = start_url or url
with open(path, encoding="utf-8") as f:
rsps.add(method, url, body=f.read())

cls.harvester_class = cls.scraper_class(url=start_url)

def run(self, result=None):
"""
Python's unittest (default) test runner will want to run tests
from a class/module if there are test_* methods in it.
We don't want this to be the case with ScraperTest though.
We also don't want to flood our logs with loads of "skips".
Overwrite the default built-in runner in this case
and make it not attempting a run at all.
"""
if self.__class__ == ScraperTest:
return None

super().run(result)

def test_consistent_ingredients_lists(self):
# Assert that the ingredients returned by the ingredient_groups() function
# are the same as the ingredients return by the ingredients() function.
grouped = []
for group in self.harvester_class.ingredient_groups():
grouped.extend(group.ingredients)

self.assertEqual(sorted(self.harvester_class.ingredients()), sorted(grouped))

def test_multiple_instructions(self):
# Assert that the instructions_list() method returns more than one item;
# this implicitly also confirms that instructions() returns a newline-separated
# value of type 'str'
instructions = self.harvester_class.instructions_list()
message = (
"Most recipes contain more than one instruction, but this recipe test "
"did not. Please check the implementation (and source HTML) and either "
"fix the code, or override this method in your test module if you are sure "
"this is the expected behaviour."
)
self.assertGreater(len(instructions), 1, message)

0 comments on commit de07e89

Please sign in to comment.