Exemple #1
0
    def test_add_muted_topic(self) -> None:
        user = self.example_user('hamlet')
        self.login_user(user)

        stream = get_stream('Verona', user.realm)

        url = '/api/v1/users/me/subscriptions/muted_topics'

        payloads = [
            {'stream': stream.name, 'topic': 'Verona3', 'op': 'add'},
            {'stream_id': stream.id, 'topic': 'Verona3', 'op': 'add'},
        ]

        mock_date_muted = datetime(2020, 1, 1, tzinfo=timezone.utc).timestamp()
        for data in payloads:
            with mock.patch('zerver.views.muting.timezone_now',
                            return_value=datetime(2020, 1, 1, tzinfo=timezone.utc)):
                result = self.api_patch(user, url, data)
                self.assert_json_success(result)

            self.assertIn([stream.name, 'Verona3', mock_date_muted], get_topic_mutes(user))
            self.assertTrue(topic_is_muted(user, stream.id, 'Verona3'))
            self.assertTrue(topic_is_muted(user, stream.id, 'verona3'))

            remove_topic_mute(
                user_profile=user,
                stream_id=stream.id,
                topic_name='Verona3',
            )
Exemple #2
0
    def test_add_muted_topic(self) -> None:
        user = self.example_user('hamlet')
        self.login_user(user)

        stream = get_stream('Verona', user.realm)

        url = '/api/v1/users/me/subscriptions/muted_topics'

        payloads = [
            {
                'stream': stream.name,
                'topic': 'Verona3',
                'op': 'add'
            },
            {
                'stream_id': stream.id,
                'topic': 'Verona3',
                'op': 'add'
            },
        ]

        for data in payloads:
            result = self.api_patch(user, url, data)
            self.assert_json_success(result)

            self.assertIn([stream.name, 'Verona3'], get_topic_mutes(user))

            self.assertTrue(topic_is_muted(user, stream.id, 'Verona3'))
            self.assertTrue(topic_is_muted(user, stream.id, 'verona3'))

            remove_topic_mute(
                user_profile=user,
                stream_id=stream.id,
                topic_name='Verona3',
            )
Exemple #3
0
    def test_add_muted_topic(self) -> None:
        user = self.example_user('hamlet')
        self.login(user.email)

        stream = get_stream('Verona', user.realm)

        url = '/api/v1/users/me/subscriptions/muted_topics'

        payloads = [
            {'stream': stream.name, 'topic': 'Verona3', 'op': 'add'},
            {'stream_id': stream.id, 'topic': 'Verona3', 'op': 'add'},
        ]

        for data in payloads:
            result = self.api_patch(user.email, url, data)
            self.assert_json_success(result)

            self.assertIn([stream.name, 'Verona3'], get_topic_mutes(user))

            self.assertTrue(topic_is_muted(user, stream.id, 'Verona3'))
            self.assertTrue(topic_is_muted(user, stream.id, 'verona3'))

            remove_topic_mute(
                user_profile=user,
                stream_id=stream.id,
                topic_name='Verona3',
            )
    def test_add_muted_topic(self) -> None:
        user = self.example_user("hamlet")
        self.login_user(user)

        stream = get_stream("Verona", user.realm)

        url = "/api/v1/users/me/subscriptions/muted_topics"

        payloads: List[Dict[str, object]] = [
            {"stream": stream.name, "topic": "Verona3", "op": "add"},
            {"stream_id": stream.id, "topic": "Verona3", "op": "add"},
        ]

        mock_date_muted = datetime(2020, 1, 1, tzinfo=timezone.utc).timestamp()
        for data in payloads:
            with mock.patch(
                "zerver.views.muting.timezone_now",
                return_value=datetime(2020, 1, 1, tzinfo=timezone.utc),
            ):
                result = self.api_patch(user, url, data)
                self.assert_json_success(result)

            self.assertIn((stream.name, "Verona3", mock_date_muted), get_topic_mutes(user))
            self.assertTrue(topic_is_muted(user, stream.id, "verona3"))

            remove_topic_mute(
                user_profile=user,
                stream_id=stream.id,
                topic_name="Verona3",
            )

        # Verify the error handling for the database level
        # IntegrityError we'll get with a race between two processes
        # trying to mute the topic.  To do this, we patch the
        # topic_is_muted function to always return False when trying
        # to mute a topic that is already muted.
        add_topic_mute(
            user_profile=user,
            stream_id=stream.id,
            recipient_id=stream.recipient.id,
            topic_name="Verona3",
            date_muted=datetime(2020, 1, 1, tzinfo=timezone.utc),
        )

        with mock.patch("zerver.views.muting.topic_is_muted", return_value=False):
            result = self.api_patch(user, url, data)
            self.assert_json_error(result, "Topic already muted")
    def test_add_muted_topic(self) -> None:
        user = self.example_user("hamlet")
        self.login_user(user)

        stream = get_stream("Verona", user.realm)

        url = "/api/v1/users/me/subscriptions/muted_topics"

        payloads = [
            {
                "stream": stream.name,
                "topic": "Verona3",
                "op": "add"
            },
            {
                "stream_id": stream.id,
                "topic": "Verona3",
                "op": "add"
            },
        ]

        mock_date_muted = datetime(2020, 1, 1, tzinfo=timezone.utc).timestamp()
        for data in payloads:
            with mock.patch(
                    "zerver.views.muting.timezone_now",
                    return_value=datetime(2020, 1, 1, tzinfo=timezone.utc),
            ):
                result = self.api_patch(user, url, data)
                self.assert_json_success(result)

            self.assertIn((stream.name, "Verona3", mock_date_muted),
                          get_topic_mutes(user))
            self.assertTrue(topic_is_muted(user, stream.id, "Verona3"))
            self.assertTrue(topic_is_muted(user, stream.id, "verona3"))

            remove_topic_mute(
                user_profile=user,
                stream_id=stream.id,
                topic_name="Verona3",
            )