Xqt has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1324019?usp=email )

Change subject: tests: Use retained recentchanges data for time ranges
......................................................................

tests: Use retained recentchanges data for time ranges

Build the time range cases around a current recent change so every
generator returns data and cannot pass vacuously after historical
entries expire.

Bug: T426535
Change-Id: Id66a9b29b7c010fe67ffc7ee9c7bf5b0264bdb8f
---
M tests/site_generators_tests.py
1 file changed, 32 insertions(+), 42 deletions(-)

Approvals:
  Xqt: Verified; Looks good to me, approved




diff --git a/tests/site_generators_tests.py b/tests/site_generators_tests.py
index 0bfca57..d0f5f8e 100755
--- a/tests/site_generators_tests.py
+++ b/tests/site_generators_tests.py
@@ -9,6 +9,7 @@

 import unittest
 from contextlib import suppress
+from datetime import timedelta
 from unittest.mock import patch

 import pywikibot
@@ -993,48 +994,37 @@
     def test_time_range(self) -> None:
         """Test the site.recentchanges() method with start/end."""
         mysite = self.site
-        for change in mysite.recentchanges(
-                start=pywikibot.Timestamp.fromISOformat(
-                    '2008-10-01T01:02:03Z'),
-                total=5):
-            self.assertIsInstance(change, dict)
-            self.assertLessEqual(change['timestamp'], '2008-10-01T01:02:03Z')
-        for change in mysite.recentchanges(
-                end=pywikibot.Timestamp.fromISOformat('2008-04-01T02:03:04Z'),
-                total=5):
-            self.assertIsInstance(change, dict)
-            self.assertGreaterEqual(change['timestamp'],
-                                    '2008-10-01T02:03:04Z')
-        for change in mysite.recentchanges(
-                start=pywikibot.Timestamp.fromISOformat(
-                    '2008-10-01T03:05:07Z'),
-                total=5, reverse=True):
-            self.assertIsInstance(change, dict)
-            self.assertGreaterEqual(change['timestamp'],
-                                    '2008-10-01T03:05:07Z')
-        for change in mysite.recentchanges(
-                end=pywikibot.Timestamp.fromISOformat('2008-10-01T04:06:08Z'),
-                total=5, reverse=True):
-            self.assertIsInstance(change, dict)
-            self.assertLessEqual(change['timestamp'], '2008-10-01T04:06:08Z')
-        for change in mysite.recentchanges(
-                start=pywikibot.Timestamp.fromISOformat(
-                    '2008-10-03T11:59:59Z'),
-                end=pywikibot.Timestamp.fromISOformat('2008-10-03T00:00:01Z'),
-                total=5):
-            self.assertIsInstance(change, dict)
-            self.assertTrue(
-                '2008-10-03T00:00:01Z' <= change['timestamp']
-                <= '2008-10-03T11:59:59Z')
-        for change in mysite.recentchanges(
-                start=pywikibot.Timestamp.fromISOformat(
-                    '2008-10-05T06:00:01Z'),
-                end=pywikibot.Timestamp.fromISOformat('2008-10-05T23:59:59Z'),
-                reverse=True, total=5):
-            self.assertIsInstance(change, dict)
-            self.assertTrue(
-                '2008-10-05T06:00:01Z' <= change['timestamp']
-                <= '2008-10-05T23:59:59Z')
+        recent_changes = list(mysite.recentchanges(total=1))
+        self.assertLength(recent_changes, 1)
+        anchor = pywikibot.Timestamp.fromISOformat(
+            recent_changes[0]['timestamp'])
+        older = anchor - timedelta(seconds=1)
+        newer = anchor + timedelta(seconds=1)
+
+        cases = (
+            ('newest-first start', {'start': newer}, None, newer),
+            ('newest-first end', {'end': older}, older, None),
+            ('newest-first range', {'start': newer, 'end': older},
+             older, newer),
+            ('oldest-first start', {'start': older, 'reverse': True},
+             older, None),
+            ('oldest-first end', {'end': newer, 'reverse': True},
+             None, newer),
+            ('oldest-first range',
+             {'start': older, 'end': newer, 'reverse': True}, older, newer),
+        )
+        for name, params, lower, upper in cases:
+            with self.subTest(name=name):
+                changes = list(mysite.recentchanges(total=1, **params))
+                self.assertLength(changes, 1)
+                self.assertIsInstance(changes[0], dict)
+                timestamp = pywikibot.Timestamp.fromISOformat(
+                    changes[0]['timestamp'])
+                if lower is not None:
+                    self.assertGreaterEqual(timestamp, lower)
+                if upper is not None:
+                    self.assertLessEqual(timestamp, upper)
+
         # start earlier than end
         with self.assertRaises(ValueError):
             mysite.recentchanges(start='2008-02-03T00:00:01Z',

--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1324019?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Id66a9b29b7c010fe67ffc7ee9c7bf5b0264bdb8f
Gerrit-Change-Number: 1324019
Gerrit-PatchSet: 2
Gerrit-Owner: Mahveotm <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to