@@ -51,6 +51,28 @@ ON `cl_from` = `page_id`
|
|||||||
def run( self ):
|
def run( self ):
|
||||||
print(type(self).get_categorized_articles() )
|
print(type(self).get_categorized_articles() )
|
||||||
|
|
||||||
|
def treat_articles(self, articles):
|
||||||
|
"""
|
||||||
|
Iterates over given articles and checks weather them are included in
|
||||||
|
self.categorized_articles (contain the notice)
|
||||||
|
|
||||||
|
@param articles Articles to check
|
||||||
|
@type articles iterable of pywikibot.page() objects
|
||||||
|
|
||||||
|
@returns Possibly empty list of wikitext links ("[[article]]")
|
||||||
|
@rtype list
|
||||||
|
"""
|
||||||
|
links = list()
|
||||||
|
|
||||||
|
for article in articles:
|
||||||
|
|
||||||
|
if article.title(underscore=True, with_section=False ) not in \
|
||||||
|
self.categorized_articles:
|
||||||
|
|
||||||
|
links.append( article.title(as_link=True, textlink=True) )
|
||||||
|
|
||||||
|
return links
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_categorized_articles( cls ):
|
def get_categorized_articles( cls ):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ Test module bot/missingnotice.py
|
|||||||
import unittest
|
import unittest
|
||||||
from unittest import mock # noqa
|
from unittest import mock # noqa
|
||||||
|
|
||||||
|
import pywikibot
|
||||||
|
|
||||||
import context # noqa
|
import context # noqa
|
||||||
from bots.missingnotice import MissingNoticeBot # noqa
|
from bots.missingnotice import MissingNoticeBot # noqa
|
||||||
|
|
||||||
@@ -38,6 +40,13 @@ class TestMissingNoticeBot(unittest.TestCase):
|
|||||||
Test class MissingNoticeBot
|
Test class MissingNoticeBot
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
genFactory = pywikibot.pagegenerators.GeneratorFactory()
|
||||||
|
self.MissingNoticeBot = MissingNoticeBot(genFactory)
|
||||||
|
self.MissingNoticeBot.categorized_articles = [ "Deutschland",
|
||||||
|
"Max_Schlee",
|
||||||
|
"Hodeng-Hodenger" ]
|
||||||
|
|
||||||
@mock.patch( 'sqlalchemy.engine.Engine.execute',
|
@mock.patch( 'sqlalchemy.engine.Engine.execute',
|
||||||
return_value=( { "page_title": b"a", },
|
return_value=( { "page_title": b"a", },
|
||||||
{ "page_title": b"b", },
|
{ "page_title": b"b", },
|
||||||
@@ -54,6 +63,32 @@ class TestMissingNoticeBot(unittest.TestCase):
|
|||||||
self.assertTrue(execute_mock.called)
|
self.assertTrue(execute_mock.called)
|
||||||
self.assertEqual(result, ["a", "b", "c", "d"] )
|
self.assertEqual(result, ["a", "b", "c", "d"] )
|
||||||
|
|
||||||
|
def test_treat_articles( self ):
|
||||||
|
"""
|
||||||
|
Test method treat_articles()
|
||||||
|
"""
|
||||||
|
|
||||||
|
# articles with notice
|
||||||
|
a = pywikibot.Page(pywikibot.Site(), "Deutschland" )
|
||||||
|
b = pywikibot.Page(pywikibot.Site(), "Max_Schlee" )
|
||||||
|
c = pywikibot.Page(pywikibot.Site(), "Hodeng-Hodenger#Test" )
|
||||||
|
# articles without notice
|
||||||
|
x = pywikibot.Page(pywikibot.Site(), "Quodvultdeus" )
|
||||||
|
y = pywikibot.Page(pywikibot.Site(), "Zoo_Bremen" )
|
||||||
|
z = pywikibot.Page(pywikibot.Site(), "Nulka#Test" )
|
||||||
|
|
||||||
|
cases = ( ( ( a, b, c ), list() ),
|
||||||
|
( ( x, y, z ), [ "[[Quodvultdeus]]",
|
||||||
|
"[[Zoo Bremen]]",
|
||||||
|
"[[Nulka#Test]]" ]),
|
||||||
|
( ( a, b, y, z ), [ "[[Zoo Bremen]]",
|
||||||
|
"[[Nulka#Test]]" ]), )
|
||||||
|
|
||||||
|
for case in cases:
|
||||||
|
res = self.MissingNoticeBot.treat_articles( case[0] )
|
||||||
|
|
||||||
|
self.assertEqual( res, case[1] )
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user