class TestServiceFunnelScrape(unittest.TestCase): def setUp(self): self.service_funnel = ServiceFunnel() html_string = """ <article class="article " id="id-39334" data-tags="A,B,C"><h2>S1</h2></article> <article class="article " id="id-39335" data-tags="B,C,D,E"><h2>S2</h2></article> """ self.service_funnel.scrape_html(html_string) def test_valid_tags_with_snippet(self): result = self.service_funnel.handle_request( {"selected_tags": [{"name": "A"}, {"name": "B"}, {"name": "C"}]} ) self.assertEqual(result["status"]["code"], 0) self.assertEqual(result["status"]["msg"], "Valid tags with snippet") self.assertEqual( result["selected_tags"], [{"name": "A"}, {"name": "B"}, {"name": "C"}], ) self.assertCountEqual(result["next_tags"], []) self.assertEqual( result["snippet"], '<article class="article" data-tags="A,B,C" id="id-39334"><h2>S1</h2></article>', ) def test_valid_tags_without_snippet(self): result = self.service_funnel.handle_request( {"selected_tags": [{"name": "B"}]} ) self.assertEqual(result["status"]["code"], 1) self.assertEqual(result["status"]["msg"], "Valid tags but no snippet") self.assertEqual(result["selected_tags"], [{"name": "B"}]) self.assertCountEqual( result["next_tags"], [{"name": "A"}, {"name": "C"}, {"name": "D"}, {"name": "E"}], ) self.assertEqual(result["snippet"], None) def test_invalid_tags(self): result = self.service_funnel.handle_request( {"selected_tags": [{"name": "A"}, {"name": "E"}]} ) self.assertEqual(result["status"]["code"], 2) self.assertEqual(result["status"]["msg"], "Invalid tags") self.assertEqual( result["selected_tags"], [{"name": "A"}, {"name": "E"}] ) self.assertCountEqual(result["next_tags"], []) self.assertEqual(result["snippet"], None)
def test_scrape_html(self): html_text_class = HTMLText() text_input = html_text_class.get_string() service_funnel = ServiceFunnel() result = service_funnel.scrape_html(text_input) assert isinstance(result, dict) assert len(result) > 1
class TestServiceFunnelScrape(unittest.TestCase): def setUp(self): self.service_funnel = ServiceFunnel() html_string = """ <article class="article " id="id-39334" data-tags="A,X,Z"><h2>S1</h2></article> <article class="article " id="id-39334" data-tags="A,B,C"><h2>S2</h2></article> <article class="article " id="id-39334" data-tags="A,B,D"><h2>S3</h2></article> <article class="article " id="id-39334" data-tags="A,D,E"><h2>S4</h2></article> """ self.service_funnel.scrape_html(html_string) def test_common_tags(self): result = self.service_funnel.handle_request({ "selected_tags": [{ "name": "A" }, { "name": "B" }, { "name": "C" }, { "name": "D" }, { "name": "E" }] }) self.assertEqual(result["status"]["code"], 2) self.assertEqual(result["status"]["msg"], "Invalid tags") self.assertEqual( result["selected_tags"], [{ "name": "A" }, { "name": "B" }, { "name": "C" }, { "name": "D" }, { "name": "E" }], ) self.assertCountEqual(result["next_tags"], []) self.assertEqual(result["snippet"], None) def test_two_tag_match(self): result = self.service_funnel.handle_request( {"selected_tags": [{ "name": "B" }, { "name": "D" }]}) self.assertEqual(result["status"]["code"], 0) self.assertEqual(result["status"]["msg"], "Valid tags with snippet") self.assertEqual(result["selected_tags"], [{ 'name': 'B' }, { 'name': 'D' }]) self.assertCountEqual(result["next_tags"], []) self.assertEqual( result["snippet"], '<article class="article" data-tags="A,B,D" id="id-39334"><h2>S3</h2></article>' ) def test_two_tag_match_2(self): result = self.service_funnel.handle_request( {"selected_tags": [{ "name": "A" }, { "name": "B" }]}) self.assertEqual(result["status"]["code"], 1) self.assertEqual(result["status"]["msg"], "Valid tags but no snippet") self.assertEqual(result["selected_tags"], [{ 'name': 'A' }, { 'name': 'B' }]) self.assertCountEqual(result["next_tags"], [ { 'name': 'C' }, { 'name': 'D' }, ]) self.assertEqual(result["snippet"], None)
from main import ServiceFunnel ###---test html---### html_string = """ <article class="article " id="id-39334" data-tags="A,B,C"><h2>S1</h2></article> <article class="article " id="id-39335" data-tags="A,B,D,E"><h2>S2</h2></article> <article class="article " id="id-39336" data-tags="X,C,D,L"><h2>S3</h2></article> <article class="article " id="id-39337" data-tags="J,A,B,Q"><h2>S4</h2></article> <article class="article " id="id-39338" data-tags="M,A,B,C,S"><h2>S5</h2></article> """ service_funnel = ServiceFunnel() service_funnel.scrape_html(html_string) def test_valid_tags_with_snippet(): result = service_funnel.handle_request( {"selected_tags": [{"name": "A"}, {"name": "B"}, {"name": "C"}]} return result def test_invalid_tags(): result = service_funnel.handle_request( {"selected_tags": [{"name": "W"}, {"name": "T"}, {"name": "R"}]} ) return result def test_valid_tags_without_snippet(): result = service_funnel.handle_request( {"selected_tags": [{"name": "A"}, {"name": "B"}]} ) return result