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', )
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', )
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", )