def setUp(self):
        self.processor = PagesProcessor()
        self.text = """
Head
{{Property dashboard start
|properties=P136:genre,P404
|grouping_property=P400
|stats_for_no_group=1
|selector_sparql=wdt:P31/wdt:P279* wd:Q7889
|target_page_title=Wikidata:WikiProject Video games/Statistics/Platform
|grouping_link=Wikidata::WikiProject Video games/Reports/Platform
}}
foo
{{Property dashboard end}}
Bottom
"""
        self.final_text = """
class TestReplaceInPage(ProcessortTest):
    def setUp(self):
        self.processor = PagesProcessor()
        self.text = """
Head
{{Property dashboard start
|properties=P136:genre,P404
|grouping_property=P400
|stats_for_no_group=1
|selector_sparql=wdt:P31/wdt:P279* wd:Q7889
|target_page_title=Wikidata:WikiProject Video games/Statistics/Platform
|grouping_link=Wikidata::WikiProject Video games/Reports/Platform
}}
foo
{{Property dashboard end}}
Bottom
"""
        self.final_text = """
Head
{{Property dashboard start
|properties=P136:genre,P404
|grouping_property=P400
|stats_for_no_group=1
|selector_sparql=wdt:P31/wdt:P279* wd:Q7889
|target_page_title=Wikidata:WikiProject Video games/Statistics/Platform
|grouping_link=Wikidata::WikiProject Video games/Reports/Platform
}}
bar
{{Property dashboard end}}
Bottom
"""

    def test_replace_in_page(self):
        result = self.processor.replace_in_page("bar", self.text)
        self.assertEqual(result, self.final_text)

    def test_replace_in_page_escaped_pipe(self):
        text = self.text.replace('wd:Q7889', '{{!}}')
        final_text = self.final_text.replace('wd:Q7889', '{{!}}')
        result = self.processor.replace_in_page("bar", text)
        self.assertEqual(result, final_text)
 def setUp(self):
     self.processor = PagesProcessor()
class TestParseConfig(ProcessortTest):
    def setUp(self):
        self.processor = PagesProcessor()

    def test_normal_config(self):
        input_config = {
            'grouping_link':
            'Wikidata:WikiProject Video games/Reports/Platform',
            'grouping_property': 'P400',
            'stats_for_no_group': '1',
            'properties': 'P136:genre,P404',
            'selector_sparql': 'wdt:P31/wdt:P279* wd:Q7889',
        }
        result = self.processor.parse_config(input_config)
        expected = {
            'grouping_link':
            'Wikidata:WikiProject Video games/Reports/Platform',
            'grouping_property':
            'P400',
            'stats_for_no_group':
            True,
            'columns': [
                PropertyConfig(property='P136', title='genre'),
                PropertyConfig(property='P404'),
            ],
            'selector_sparql':
            'wdt:P31/wdt:P279* wd:Q7889'
        }
        self.assertEqual(result, expected)

    def test_minimal_config(self):
        input_config = {
            'selector_sparql': 'wdt:P31/wdt:P279* wd:Q7889',
            'grouping_property': 'P400',
            'properties': 'P136:genre,P404',
        }
        result = self.processor.parse_config(input_config)
        expected = {
            'selector_sparql':
            'wdt:P31/wdt:P279* wd:Q7889',
            'grouping_property':
            'P400',
            'columns': [
                PropertyConfig(property='P136', title='genre'),
                PropertyConfig(property='P404'),
            ],
            'stats_for_no_group':
            False,
        }
        self.assertEqual(result, expected)

    def test_full_config(self):
        input_config = {
            'grouping_link':
            'Wikidata:WikiProject Video games/Reports/Platform',
            'grouping_property': 'P400',
            'stats_for_no_group': '1',
            'properties': 'P136:genre,P404',
            'selector_sparql': 'wdt:P31/wdt:P279* wd:Q7889',
            'grouping_threshold': '1',
            'property_threshold': '2',
        }
        result = self.processor.parse_config(input_config)
        expected = {
            'grouping_link':
            'Wikidata:WikiProject Video games/Reports/Platform',
            'selector_sparql':
            'wdt:P31/wdt:P279* wd:Q7889',
            'grouping_property':
            'P400',
            'columns': [
                PropertyConfig(property='P136', title='genre'),
                PropertyConfig(property='P404'),
            ],
            'stats_for_no_group':
            True,
            'grouping_threshold':
            '1',
            'property_threshold':
            '2',
        }
        self.assertEqual(result, expected)

    def test_empty_config(self):
        input_config = {}
        with (self.assertRaises(ConfigException)):
            self.processor.parse_config(input_config)

    def test_insufficient_config(self):
        input_config = {
            'selector_sparql': 'wdt:P31/wdt:P279* wd:Q7889',
        }
        with (self.assertRaises(ConfigException)):
            self.processor.parse_config(input_config)
 def setUp(self):
     fake_cache_client = fakeredis.FakeStrictRedis()
     self.processor = PagesProcessor(cache_client=fake_cache_client)
Exemplo n.º 6
0
 def test(self):
     processor = PagesProcessor()
     result = processor.replace_in_page("bar", self.text)
     self.assertEqual(result, self.final_text)