aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-01-17 10:43:51 -0800
committerGravatar MarkKoz <[email protected]>2020-02-12 10:07:53 -0800
commita7ba405732e28e8c44e7ddedce8136f6319980b0 (patch)
tree05b661524bb150fe38b53ff6a5a0fcbe5ed7e0cc
parentSync tests: test sync with an empty diff (diff)
Sync tests: test sync sends a confirmation prompt
The prompt should be sent only if the diff is large and should fail if not confirmed. The empty diff test was integrated into this new test.
-rw-r--r--tests/bot/cogs/sync/test_base.py48
1 files changed, 36 insertions, 12 deletions
diff --git a/tests/bot/cogs/sync/test_base.py b/tests/bot/cogs/sync/test_base.py
index 642be75eb..898b12b07 100644
--- a/tests/bot/cogs/sync/test_base.py
+++ b/tests/bot/cogs/sync/test_base.py
@@ -252,18 +252,42 @@ class SyncerSyncTests(unittest.TestCase):
self.bot = helpers.MockBot()
self.syncer = TestSyncer(self.bot)
- def test_sync_with_empty_diff(self):
- """A confirmation prompt should not be sent if the diff is too small."""
- guild = helpers.MockGuild()
- diff = _Diff(set(), set(), set())
+ def test_sync_sends_confirmation_prompt(self):
+ """The prompt should be sent only if the diff is large and should fail if not confirmed."""
+ large_diff = _Diff({1}, {2}, {3})
+ subtests = (
+ (False, False, True, None, None, _Diff({1}, {2}, set()), "diff too small"),
+ (True, True, True, helpers.MockMessage(), True, large_diff, "confirmed"),
+ (True, False, False, None, None, large_diff, "couldn't get channel"),
+ (True, True, False, helpers.MockMessage(), False, large_diff, "not confirmed"),
+ )
+
+ for prompt_called, wait_called, sync_called, prompt_msg, confirmed, diff, msg in subtests:
+ with self.subTest(msg=msg):
+ self.syncer._sync.reset_mock()
+ self.syncer._get_diff.reset_mock()
+
+ self.syncer.MAX_DIFF = 2
+ self.syncer._get_diff.return_value = diff
+ self.syncer._send_prompt = helpers.AsyncMock(return_value=prompt_msg)
+ self.syncer._wait_for_confirmation = helpers.AsyncMock(return_value=confirmed)
+
+ guild = helpers.MockGuild()
+ asyncio.run(self.syncer.sync(guild))
+
+ self.syncer._get_diff.assert_called_once_with(guild)
- self.syncer._send_prompt = helpers.AsyncMock()
- self.syncer._wait_for_confirmation = helpers.AsyncMock()
- self.syncer._get_diff.return_value = diff
+ if prompt_called:
+ self.syncer._send_prompt.assert_called_once()
+ else:
+ self.syncer._send_prompt.assert_not_called()
- asyncio.run(self.syncer.sync(guild))
+ if wait_called:
+ self.syncer._wait_for_confirmation.assert_called_once()
+ else:
+ self.syncer._wait_for_confirmation.assert_not_called()
- self.syncer._get_diff.assert_called_once_with(guild)
- self.syncer._send_prompt.assert_not_called()
- self.syncer._wait_for_confirmation.assert_not_called()
- self.syncer._sync.assert_called_once_with(diff)
+ if sync_called:
+ self.syncer._sync.assert_called_once_with(diff)
+ else:
+ self.syncer._sync.assert_not_called()