#!/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 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) auto.nextVideo(self.platform1) 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) auto.nextVideo(self.platform1) 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()) # 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()