@@ -51,6 +51,28 @@ ON `cl_from` = `page_id`
|
||||
def run( self ):
|
||||
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
|
||||
def get_categorized_articles( cls ):
|
||||
"""
|
||||
|
||||
@@ -29,6 +29,8 @@ Test module bot/missingnotice.py
|
||||
import unittest
|
||||
from unittest import mock # noqa
|
||||
|
||||
import pywikibot
|
||||
|
||||
import context # noqa
|
||||
from bots.missingnotice import MissingNoticeBot # noqa
|
||||
|
||||
@@ -38,6 +40,13 @@ class TestMissingNoticeBot(unittest.TestCase):
|
||||
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',
|
||||
return_value=( { "page_title": b"a", },
|
||||
{ "page_title": b"b", },
|
||||
@@ -54,6 +63,32 @@ class TestMissingNoticeBot(unittest.TestCase):
|
||||
self.assertTrue(execute_mock.called)
|
||||
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__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user