"""Tiktok parsing logic test.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from src import errors from src import tiktok_parser @pytest.mark.parametrize( 'value,expected', [ ('1.1M', 1100000), ('1M', 1000000), ('1K', 1000), ('10K', 10000), ('11.63K', 11630), ('421', 421), ('Invalid', None) ]) def test__abbreviated_value_to_int(value, expected): """Test _abbreviated_value_to_int.""" assert tiktok_parser._abbreviated_value_to_int(value) == expected @patch('src.tiktok_parser.requests') def test_successful_parsing(requests_mock, mock_artist_page, mock_tiktok_url): """Test parsing the number of followers successfully.""" expected_followers_count = 39100000 requests_mock.get.return_value = MagicMock(text=mock_artist_page) result = tiktok_parser.get_tiktok_followers(mock_tiktok_url) assert result == expected_followers_count @patch('src.tiktok_parser.requests') def test_parsing_failure(requests_mock, mock_broken_artist_page, mock_tiktok_url): """Test parsing the number of followers successfully.""" requests_mock.get.return_value = MagicMock(text=mock_broken_artist_page) result = tiktok_parser.get_tiktok_followers(mock_tiktok_url) assert result is None @patch('src.tiktok_parser.requests') def test_captcha(requests_mock, mock_captcha_page, mock_tiktok_url): """Test parsing the number of followers successfully.""" requests_mock.get.return_value = MagicMock(text=mock_captcha_page) with pytest.raises(errors.TikTokCaptchaException): tiktok_parser.get_tiktok_followers(mock_tiktok_url)