#!/usr/bin/env python3
|
|
|
|
import autoupload
|
|
from datetime import datetime
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
|
|
class TestVideoMethods(unittest.TestCase):
|
|
|
|
platform1 = "platform"
|
|
platform2 = "otherplatform"
|
|
|
|
def tearDown(self):
|
|
# Reset the kinda static variable between runs.
|
|
autoupload._autouploadFiles = []
|
|
|
|
def test_nextVideo(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
Episode1 = {}
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
|
|
def test_nextVideoSubfolder(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
"subfolder/Episode1" = {}
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/subfolder/Episode1.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/subfolder/Episode1.mp4")
|
|
|
|
def test_success(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
Episode1 = {}
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
auto.nextVideo(self.platform1)
|
|
auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
|
|
self.assertEqual(auto.nextVideo(self.platform1), False)
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
# TODO: read file and check formatting and content?
|
|
|
|
# print("content of file")
|
|
# with open(videoFile.filename, "r") as file:
|
|
# print(file.readlines())
|
|
|
|
def test_error(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
Episode1 = {}
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
auto.error(self.platform1, "https://platform/url")
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
# TODO: read file and check formatting and content?
|
|
|
|
# print("content of file")
|
|
# with open(videoFile.filename, "r") as file:
|
|
# print(file.readlines())
|
|
|
|
def test_errorThenSuccess(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
Episode1 = {}
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
auto.error(self.platform1, "https://platform/url")
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
# TODO: read file and check formatting and content?
|
|
|
|
print("content of file")
|
|
with open(videoFile.filename, "r") as file:
|
|
print(file.readlines())
|
|
|
|
|
|
auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
|
|
self.assertEqual(auto.nextVideo(self.platform1), False)
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
# TODO: read file and check formatting and content?
|
|
# TODO: check the key "platform-error" is not present after a success
|
|
|
|
print("content of file")
|
|
with open(videoFile.filename, "r") as file:
|
|
print(file.readlines())
|
|
|
|
def test_subAutouploadFile(self):
|
|
with TestFileContent(
|
|
"""[videos]
|
|
Episode2 = {} # TODO: We should chek that the path of this file is from the base path of this autoupload config file
|
|
"""
|
|
) as autouploadFile:
|
|
with TestFileContent(
|
|
f"""autoupload = ["{autouploadFile.filename}"] # list of strings, one for each sub autoupload file
|
|
|
|
[videos]
|
|
Episode1 = {{}} # Double curly braces to escape them for f-string
|
|
"""
|
|
) as videoFile:
|
|
auto = autoupload.AutoUpload(videoFile.filename)
|
|
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
|
|
self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode2.mp4")
|
|
self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
|
|
# TODO: read file and check formatting and content?
|
|
|
|
# https://stackoverflow.com/a/54053967
|
|
class TestFileContent:
|
|
def __init__(self, content):
|
|
|
|
self.file = tempfile.NamedTemporaryFile(mode="w", delete=False)
|
|
|
|
with self.file as f:
|
|
f.write(content)
|
|
|
|
@property
|
|
def filename(self):
|
|
return self.file.name
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, type, value, traceback):
|
|
os.unlink(self.filename)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|