|
| 1 | +from copy import deepcopy |
1 | 2 | from typing import Any |
2 | 3 |
|
3 | 4 | import pytest |
4 | 5 |
|
5 | 6 | from zulipterminal.helper import ( |
6 | 7 | canonicalize_color, classify_unread_counts, index_messages, notify, |
7 | | - powerset, |
| 8 | + powerset, set_count, |
8 | 9 | ) |
9 | 10 |
|
10 | 11 |
|
| 12 | +@pytest.mark.parametrize('all_msg, unread_topics', [ |
| 13 | + (6, {(1001, 'Topic 1'): 3, (1002, 'Topic 2'): 1, (1002, 'Topic 3'): 2}), |
| 14 | + ]) |
| 15 | +@pytest.mark.parametrize( |
| 16 | + 'new_count, id_list, expected_all_msg, expected_unread_topics', [ |
| 17 | + (1, [], 6, {(1001, 'Topic 1'): 3, (1002, 'Topic 2'): 1, |
| 18 | + (1002, 'Topic 3'): 2}), |
| 19 | + (1, [7], 7, {(1001, 'Topic 1'): 4, (1002, 'Topic 2'): 1, |
| 20 | + (1002, 'Topic 3'): 2}), |
| 21 | + (1, [7, 8, 9], 9, {(1001, 'Topic 1'): 4, (1002, 'Topic 2'): 1, |
| 22 | + (1002, 'Topic 3'): 2, (1003, 'Topic 100'): 2}), |
| 23 | + (-1, [], 6, {(1001, 'Topic 1'): 3, (1002, 'Topic 2'): 1, |
| 24 | + (1002, 'Topic 3'): 2}), |
| 25 | + (-1, [5], 5, {(1001, 'Topic 1'): 3, (1002, 'Topic 2'): 1, |
| 26 | + (1002, 'Topic 3'): 1}), |
| 27 | + (-1, [1, 2, 4, 6], 2, {(1002, 'Topic 2'): 1, (1002, 'Topic 3'): 1}), |
| 28 | + (-1, [1, 2, 3, 4, 5, 6], 0, {}), |
| 29 | + ]) |
| 30 | +def test_set_count_stream(mocker, initial_unread_counts, |
| 31 | + unread_topics, all_msg, id_list, new_count, |
| 32 | + expected_unread_topics, expected_all_msg, |
| 33 | + index_multiple_messages): |
| 34 | + controller = mocker.patch('zulipterminal.core.Controller.__init__') |
| 35 | + controller.model.is_muted_stream = mocker.patch( |
| 36 | + 'zulipterminal.model.Model.is_muted_stream', return_value=False) |
| 37 | + |
| 38 | + unread_counts = deepcopy(dict(initial_unread_counts, |
| 39 | + **{'all_msg': all_msg, |
| 40 | + 'unread_topics': unread_topics})) |
| 41 | + |
| 42 | + controller.model.index = index_multiple_messages |
| 43 | + controller.model.unread_counts = unread_counts |
| 44 | + set_count(id_list, controller, new_count) |
| 45 | + |
| 46 | + expected_unread_counts = dict(initial_unread_counts, |
| 47 | + **{'all_msg': expected_all_msg, |
| 48 | + 'unread_topics': expected_unread_topics}) |
| 49 | + |
| 50 | + assert controller.model.unread_counts == expected_unread_counts |
| 51 | + |
| 52 | + |
11 | 53 | def test_index_messages_narrow_all_messages(mocker, |
12 | 54 | messages_successful_response, |
13 | 55 | index_all_messages, |
|
0 commit comments