예제 #1
0
    async def test_diff_for_new_updated_and_leaving_users(self):
        """When users are added, updated, and removed, all of them are returned properly."""
        new_user = fake_user(id=99, name="new")
        updated_user = fake_user(id=55, name="updated")
        leaving_user = fake_user(id=63, in_guild=False)

        self.bot.api_client.get.return_value = [
            fake_user(), fake_user(id=55),
            fake_user(id=63)
        ]
        guild = self.get_guild(fake_user(), new_user, updated_user)

        actual_diff = await self.syncer._get_diff(guild)
        expected_diff = ({_User(**new_user)},
                         {_User(**updated_user),
                          _User(**leaving_user)}, None)

        self.assertEqual(actual_diff, expected_diff)
예제 #2
0
    async def test_diff_sets_in_guild_false_for_leaving_users(self):
        """When a user leaves the guild, the `in_guild` flag is updated to `False`."""
        leaving_user = fake_user(id=63, in_guild=False)

        self.bot.api_client.get.return_value = [fake_user(), fake_user(id=63)]
        guild = self.get_guild(fake_user())

        actual_diff = await self.syncer._get_diff(guild)
        expected_diff = (set(), {_User(**leaving_user)}, None)

        self.assertEqual(actual_diff, expected_diff)
예제 #3
0
    async def test_diff_for_new_users(self):
        """Only new users should be added to the 'created' set of the diff."""
        new_user = fake_user(id=99, name="new")

        self.bot.api_client.get.return_value = [fake_user()]
        guild = self.get_guild(fake_user(), new_user)

        actual_diff = await self.syncer._get_diff(guild)
        expected_diff = ({_User(**new_user)}, set(), None)

        self.assertEqual(actual_diff, expected_diff)
예제 #4
0
    async def test_diff_for_updated_users(self):
        """Only updated users should be added to the 'updated' set of the diff."""
        updated_user = fake_user(id=99, name="new")

        self.bot.api_client.get.return_value = [
            fake_user(id=99, name="old"),
            fake_user()
        ]
        guild = self.get_guild(updated_user, fake_user())

        actual_diff = await self.syncer._get_diff(guild)
        expected_diff = (set(), {_User(**updated_user)}, None)

        self.assertEqual(actual_diff, expected_diff)
예제 #5
0
    async def test_sync_created_users(self):
        """Only POST requests should be made with the correct payload."""
        users = [fake_user(id=111), fake_user(id=222)]

        user_tuples = {_User(**user) for user in users}
        diff = _Diff(user_tuples, set(), None)
        await self.syncer._sync(diff)

        calls = [mock.call("bot/users", json=user) for user in users]
        self.bot.api_client.post.assert_has_calls(calls, any_order=True)
        self.assertEqual(self.bot.api_client.post.call_count, len(users))

        self.bot.api_client.put.assert_not_called()
        self.bot.api_client.delete.assert_not_called()