jenkins-bot has submitted this change and it was merged.
Change subject: [FEAT] logentry tests: Also test simple classes
......................................................................
[FEAT] logentry tests: Also test simple classes
Test the LogEntry classes created without a subclass.
Change-Id: I4adbbe02bbe14e760f657a514d28973742e909a8
---
M tests/logentry_tests.py
1 file changed, 50 insertions(+), 22 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/logentry_tests.py b/tests/logentry_tests.py
index 17bc02e..20820c9 100644
--- a/tests/logentry_tests.py
+++ b/tests/logentry_tests.py
@@ -61,6 +61,31 @@
MediaWikiVersion('1.20'))
return next(iter(self.site.logevents(logtype=logtype, total=1)))
+ def _test_logevent(self, logtype):
+ """Test a single logtype entry."""
+ logentry = self._get_logentry(logtype)
+ if logtype in LogEntryFactory._logtypes:
+ self.assertEqual(logentry._expectedType, logtype)
+ else:
+ self.assertIsNone(logentry._expectedType)
+ if self.site_key == 'old':
+ self.assertNotIn('params', logentry.data)
+ else:
+ self.assertNotIn(logentry.type(), logentry.data)
+ self.assertIsInstance(logentry.action(), unicode)
+ self.assertIsInstance(logentry.comment(), unicode)
+ self.assertIsInstance(logentry.logid(), int)
+ self.assertIsInstance(logentry.ns(), int)
+ self.assertIsInstance(logentry.pageid(), int)
+ self.assertIsInstance(logentry.timestamp(), pywikibot.Timestamp)
+ if 'title' in logentry.data: # title may be missing
+ self.assertIsInstance(logentry.title(), pywikibot.Page)
+ self.assertEqual(logentry.type(), logtype)
+ self.assertIsInstance(logentry.user(), unicode)
+ self.assertGreaterEqual(logentry.logid(), 0)
+ self.assertGreaterEqual(logentry.ns(), -2)
+ self.assertGreaterEqual(logentry.pageid(), 0)
+
class TestLogentriesMeta(MetaTestCaseClass):
@@ -69,31 +94,12 @@
def __new__(cls, name, bases, dct):
"""Create the new class."""
def test_method(logtype):
-
def test_logevent(self, key):
- """Test a single logtype entry."""
- logentry = self._get_logentry(logtype)
- self.assertEqual(logtype, logentry._expectedType)
- if key == 'old':
- self.assertNotIn('params', logentry.data)
- else:
- self.assertNotIn(logentry.type(), logentry.data)
- self.assertIsInstance(logentry.action(), unicode)
- self.assertIsInstance(logentry.comment(), unicode)
- self.assertIsInstance(logentry.logid(), int)
- self.assertIsInstance(logentry.ns(), int)
- self.assertIsInstance(logentry.pageid(), int)
- self.assertIsInstance(logentry.timestamp(),
pywikibot.Timestamp)
- if 'title' in logentry.data: # title may be missing
- self.assertIsInstance(logentry.title(), pywikibot.Page)
- self.assertEqual(logentry.type(), logtype)
- self.assertIsInstance(logentry.user(), unicode)
- self.assertGreaterEqual(logentry.logid(), 0)
- self.assertGreaterEqual(logentry.ns(), -2)
- self.assertGreaterEqual(logentry.pageid(), 0)
+ self._test_logevent(logtype)
+
return test_logevent
- # create test methods for package messages processed by unittest
+ # create test methods for the support logtype classes
for logtype in LogEntryFactory._logtypes:
test_name = str('test_%sEntry' % logtype.title())
dct[test_name] = test_method(logtype)
@@ -109,6 +115,28 @@
__metaclass__ = TestLogentriesMeta
+class TestSimpleLogentries(TestLogentriesBase):
+
+ """Test logentry classes without special classes."""
+
+ def test_simple_entries(self, key):
+ """Test those entries which don't have an extra LogEntry subclass."""
+ # Unfortunately it's not possible to use the metaclass to create a
+ # bunch of test methods for this too as the site instances haven't been
+ # initialized yet.
+ available_types = set(self.site._paraminfo.parameter(
+ 'query+logevents', 'type')['type'])
+ for simple_type in available_types - set(LogEntryFactory._logtypes):
+ if not simple_type:
+ # paraminfo also reports an empty string as a type
+ continue
+ try:
+ self._test_logevent(simple_type)
+ except StopIteration:
+ print('Unable to test "{0}" on "{1}" because there are no log '
+ 'entries with that type.'.format(simple_type, key))
+
+
class TestLogentryParams(TestLogentriesBase):
"""Test LogEntry properties specific to their action."""
--
To view, visit https://gerrit.wikimedia.org/r/215015
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4adbbe02bbe14e760f657a514d28973742e909a8
Gerrit-PatchSet: 3
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: XZise <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits