aboutsummaryrefslogtreecommitdiffstats
path: root/tests
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 /tests
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.
Diffstat (limited to 'tests')
-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()