2021-08-06 00:07:30 +02:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
from tests.constants import TEST_CHANNEL_DATA, TEST_VIDEO_DATA
|
2021-11-19 19:44:46 +01:00
|
|
|
from ytrssil.datatypes import Channel, ChannelData, Video
|
2021-08-06 00:07:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
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:
|
2021-11-19 19:44:46 +01:00
|
|
|
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
|
|
|
|
channel_data.update({
|
2021-08-06 00:07:30 +02:00
|
|
|
'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,
|
|
|
|
),
|
|
|
|
},
|
|
|
|
})
|
2021-11-19 19:44:46 +01:00
|
|
|
channel_string = str(Channel.from_dict(channel_data))
|
2021-08-06 00:07:30 +02:00
|
|
|
|
2021-11-19 19:44:46 +01:00
|
|
|
assert channel_string == 'channel_name - 1'
|
2021-08-06 00:07:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_channel_add_new_video() -> None:
|
2021-11-19 19:44:46 +01:00
|
|
|
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
|
|
|
|
channel = Channel.from_dict(channel_data)
|
2021-08-06 00:07:30 +02:00
|
|
|
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:
|
2021-11-19 19:44:46 +01:00
|
|
|
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
|
|
|
|
channel_data.update({
|
2021-08-06 00:07:30 +02:00
|
|
|
'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,
|
|
|
|
),
|
|
|
|
},
|
|
|
|
})
|
2021-11-19 19:44:46 +01:00
|
|
|
channel = Channel.from_dict(channel_data)
|
2021-08-06 00:07:30 +02:00
|
|
|
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,
|
|
|
|
)
|
2021-11-19 19:44:46 +01:00
|
|
|
|
|
|
|
channel_data: ChannelData = TEST_CHANNEL_DATA.copy()
|
|
|
|
channel_data.update({'new_videos': {'video_id': video}})
|
|
|
|
channel = Channel.from_dict(channel_data)
|
2021-08-06 00:07:30 +02:00
|
|
|
|
|
|
|
channel.mark_video_as_watched(video)
|
|
|
|
|
|
|
|
assert list(channel.new_videos.keys()) == []
|
|
|
|
assert list(channel.watched_videos.keys()) == ['video_id']
|