cli/tests/test_datatypes.py

99 lines
3.1 KiB
Python

from datetime import datetime
from tests.constants import TEST_CHANNEL_DATA, TEST_VIDEO_DATA
from ytrssil.datatypes import Channel, ChannelData, Video
def test_video_str() -> None:
string = str(Video.from_dict(TEST_VIDEO_DATA))
assert string == 'channel_name - video_name - video_id'
def test_channel_str() -> None:
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
channel_data.update({
'new_videos': {
'video_id': Video(
video_id='video_id',
name='video_name',
url='https://www.youtube.com/watch?v=video_id',
channel_id='channel_id',
channel_name='channel_name',
timestamp=datetime.fromisoformat('1970-01-01T00:00:00+00:00'),
watch_timestamp=None,
),
},
})
channel_string = str(Channel.from_dict(channel_data))
assert channel_string == 'channel_name - 1'
def test_channel_add_new_video() -> None:
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
channel = Channel.from_dict(channel_data)
added_video = channel.add_video(Video(
video_id='video_id',
name='video_name',
url='https://www.youtube.com/watch?v=video_id',
channel_id='channel_id',
channel_name='channel_name',
timestamp=datetime.fromisoformat('1970-01-01T00:00:00+00:00'),
watch_timestamp=None,
))
assert added_video
assert list(channel.new_videos.keys()) == ['video_id']
def test_channel_add_existing_video() -> None:
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
channel_data.update({
'new_videos': {
'video_id': Video(
video_id='video_id',
name='video_name',
url='https://www.youtube.com/watch?v=video_id',
channel_id='channel_id',
channel_name='channel_name',
timestamp=datetime.fromisoformat('1970-01-01T00:00:00+00:00'),
watch_timestamp=None,
),
},
})
channel = Channel.from_dict(channel_data)
added_video = channel.add_video(Video(
video_id='video_id',
name='video_name',
url='https://www.youtube.com/watch?v=video_id',
channel_id='channel_id',
channel_name='channel_name',
timestamp=datetime.fromisoformat('1970-01-01T00:00:00+00:00'),
watch_timestamp=None,
))
assert not added_video
assert list(channel.new_videos.keys()) == ['video_id']
def test_channel_mark_video_as_watched() -> None:
video = Video(
video_id='video_id',
name='video_name',
url='https://www.youtube.com/watch?v=video_id',
channel_id='channel_id',
channel_name='channel_name',
timestamp=datetime.fromisoformat('1970-01-01T00:00:00+00:00'),
watch_timestamp=None,
)
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
channel_data.update({'new_videos': {'video_id': video}})
channel = Channel.from_dict(channel_data)
channel.mark_video_as_watched(video)
assert list(channel.new_videos.keys()) == []
assert list(channel.watched_videos.keys()) == ['video_id']