File size: 1,363 Bytes
a48e17c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import unittest
from unittest.mock import Mock, patch

import legacy_parser as engine


class VkCountersTests(unittest.TestCase):
    def test_missing_counter_is_not_fabricated_zero(self):
        url = 'https://vk.com/wall-123_456'
        for field in ({}, {'views': {}}, {'views': None}, {'views': {'count': '100'}}):
            with self.subTest(field=field):
                post = dict(id=456, owner_id=-123, **field)
                response = Mock(status_code=200, json=lambda: {'response': {'items': [post], 'groups': [{'id': 123, 'name': 'Сообщество'}]}})
                with patch.object(engine.requests, 'get', return_value=response):
                    result = engine.process_vk_batch([(url, -123, '456')])
                self.assertEqual(result[url], ('Сообщество', None))

    def test_real_zero_and_nonzero_are_preserved(self):
        url = 'https://vk.com/wall-123_456'
        for count in (0, 23000):
            post = {'id': 456, 'owner_id': -123, 'views': {'count': count}}
            response = Mock(status_code=200, json=lambda: {'response': {'items': [post]}})
            with patch.object(engine.requests, 'get', return_value=response):
                result = engine.process_vk_batch([(url, -123, '456')])
            self.assertEqual(result[url][1], count)


if __name__ == '__main__':
    unittest.main()