mirror of
https://git.vectorsigma.ru/public/tubearchivist.git
synced 2026-08-04 21:39:49 +00:00
add tests for channel remote_query
This commit is contained in:
0
backend/channel/tests/__init__.py
Normal file
0
backend/channel/tests/__init__.py
Normal file
0
backend/channel/tests/test_src/__init__.py
Normal file
0
backend/channel/tests/test_src/__init__.py
Normal file
117
backend/channel/tests/test_src/test_remote_query.py
Normal file
117
backend/channel/tests/test_src/test_remote_query.py
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
"""test video query building"""
|
||||||
|
|
||||||
|
# pylint: disable=redefined-outer-name
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from channel.src.remote_query import VideoQueryBuilder
|
||||||
|
from video.src.constants import VideoTypeEnum
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default_config():
|
||||||
|
"""from appsettings"""
|
||||||
|
return {
|
||||||
|
"subscriptions": {
|
||||||
|
"channel_size": 5,
|
||||||
|
"live_channel_size": 3,
|
||||||
|
"shorts_channel_size": 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def empty_overwrites():
|
||||||
|
"""from channel overwrites"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def overwrites():
|
||||||
|
"""from channel overwrites"""
|
||||||
|
return {
|
||||||
|
"subscriptions_channel_size": 10,
|
||||||
|
"subscriptions_live_channel_size": 0,
|
||||||
|
"subscriptions_shorts_channel_size": None,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_all_queries_with_limit(default_config, empty_overwrites):
|
||||||
|
"""default, empty overwrite"""
|
||||||
|
builder = VideoQueryBuilder(default_config, empty_overwrites)
|
||||||
|
result = builder.build_queries(None, limit=True)
|
||||||
|
expected = [
|
||||||
|
(VideoTypeEnum.VIDEOS, 5),
|
||||||
|
(VideoTypeEnum.STREAMS, 3),
|
||||||
|
(VideoTypeEnum.SHORTS, 2),
|
||||||
|
]
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_all_queries_without_limit(default_config, empty_overwrites):
|
||||||
|
"""limit disabled"""
|
||||||
|
builder = VideoQueryBuilder(default_config, empty_overwrites)
|
||||||
|
result = builder.build_queries(None, limit=False)
|
||||||
|
expected = [
|
||||||
|
(VideoTypeEnum.VIDEOS, None),
|
||||||
|
(VideoTypeEnum.STREAMS, None),
|
||||||
|
(VideoTypeEnum.SHORTS, None),
|
||||||
|
]
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_specific_query(default_config, empty_overwrites):
|
||||||
|
"""single vid_type"""
|
||||||
|
builder = VideoQueryBuilder(default_config, empty_overwrites)
|
||||||
|
result = builder.build_queries(VideoTypeEnum.VIDEOS)
|
||||||
|
assert result == [(VideoTypeEnum.VIDEOS, 5)]
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_multiple_queries(default_config, empty_overwrites):
|
||||||
|
"""vid_type list"""
|
||||||
|
builder = VideoQueryBuilder(default_config, empty_overwrites)
|
||||||
|
result = builder.build_queries(
|
||||||
|
[VideoTypeEnum.VIDEOS, VideoTypeEnum.SHORTS]
|
||||||
|
)
|
||||||
|
assert result == [(VideoTypeEnum.VIDEOS, 5), (VideoTypeEnum.SHORTS, 2)]
|
||||||
|
|
||||||
|
|
||||||
|
def test_overwrite_applied(default_config, overwrites):
|
||||||
|
"""with overwrite from channel config"""
|
||||||
|
builder = VideoQueryBuilder(default_config, overwrites)
|
||||||
|
result = builder.build_queries(None, limit=True)
|
||||||
|
expected = [
|
||||||
|
(VideoTypeEnum.VIDEOS, 10), # Overwritten
|
||||||
|
# STREAMS is overwritten to 0, should be excluded
|
||||||
|
(VideoTypeEnum.SHORTS, 2), # None in overwrite, fallback to config
|
||||||
|
]
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_limit_ignores_config_and_overwrites(default_config, overwrites):
|
||||||
|
"""no limit single vid_type"""
|
||||||
|
builder = VideoQueryBuilder(default_config, overwrites)
|
||||||
|
result = builder.build_queries([VideoTypeEnum.STREAMS], limit=False)
|
||||||
|
assert result == [(VideoTypeEnum.STREAMS, None)]
|
||||||
|
|
||||||
|
|
||||||
|
def test_zero_query_not_included(default_config):
|
||||||
|
"""overwrite to zero to disable"""
|
||||||
|
overwrites = {"subscriptions_live_channel_size": 0}
|
||||||
|
builder = VideoQueryBuilder(default_config, overwrites)
|
||||||
|
result = builder.build_queries([VideoTypeEnum.STREAMS], limit=True)
|
||||||
|
assert not result # Should be skipped due to 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_video_type_is_ignored(default_config):
|
||||||
|
"""invalid enum"""
|
||||||
|
builder = VideoQueryBuilder(default_config)
|
||||||
|
|
||||||
|
class FakeEnum(Enum):
|
||||||
|
"""invalid"""
|
||||||
|
|
||||||
|
INVALID = "invalid"
|
||||||
|
|
||||||
|
result = builder.build_queries([FakeEnum.INVALID], limit=True)
|
||||||
|
assert not result
|
||||||
Reference in New Issue
Block a user