You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
5.1 KiB

  1. #!/usr/bin/env python3
  2. import autoupload
  3. from datetime import datetime
  4. import os
  5. import tempfile
  6. import unittest
  7. class TestVideoMethods(unittest.TestCase):
  8. platform1 = "platform"
  9. platform2 = "otherplatform"
  10. def tearDown(self):
  11. # Reset the kinda static variable between runs.
  12. autoupload._autouploadFiles = []
  13. def test_nextVideo(self):
  14. with TestFileContent(
  15. """[videos]
  16. Episode1 = {}
  17. """
  18. ) as videoFile:
  19. auto = autoupload.AutoUpload(videoFile.filename)
  20. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  21. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  22. def test_nextVideoSubfolder(self):
  23. with TestFileContent(
  24. """[videos]
  25. "subfolder/Episode1" = {}
  26. """
  27. ) as videoFile:
  28. auto = autoupload.AutoUpload(videoFile.filename)
  29. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/subfolder/Episode1.mp4")
  30. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/subfolder/Episode1.mp4")
  31. def test_success(self):
  32. with TestFileContent(
  33. """[videos]
  34. Episode1 = {}
  35. """
  36. ) as videoFile:
  37. auto = autoupload.AutoUpload(videoFile.filename)
  38. auto.nextVideo(self.platform1)
  39. auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
  40. self.assertEqual(auto.nextVideo(self.platform1), False)
  41. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  42. # TODO: read file and check formatting and content?
  43. # print("content of file")
  44. # with open(videoFile.filename, "r") as file:
  45. # print(file.readlines())
  46. def test_error(self):
  47. with TestFileContent(
  48. """[videos]
  49. Episode1 = {}
  50. """
  51. ) as videoFile:
  52. auto = autoupload.AutoUpload(videoFile.filename)
  53. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  54. auto.error(self.platform1, "https://platform/url")
  55. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  56. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  57. # TODO: read file and check formatting and content?
  58. # print("content of file")
  59. # with open(videoFile.filename, "r") as file:
  60. # print(file.readlines())
  61. def test_errorThenSuccess(self):
  62. with TestFileContent(
  63. """[videos]
  64. Episode1 = {}
  65. """
  66. ) as videoFile:
  67. auto = autoupload.AutoUpload(videoFile.filename)
  68. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  69. auto.error(self.platform1, "https://platform/url")
  70. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  71. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  72. # TODO: read file and check formatting and content?
  73. print("content of file")
  74. with open(videoFile.filename, "r") as file:
  75. print(file.readlines())
  76. auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
  77. self.assertEqual(auto.nextVideo(self.platform1), False)
  78. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  79. # TODO: read file and check formatting and content?
  80. # TODO: check the key "platform-error" is not present after a success
  81. print("content of file")
  82. with open(videoFile.filename, "r") as file:
  83. print(file.readlines())
  84. def test_subAutouploadFile(self):
  85. with TestFileContent(
  86. """[videos]
  87. Episode2 = {} # TODO: We should chek that the path of this file is from the base path of this autoupload config file
  88. """
  89. ) as autouploadFile:
  90. with TestFileContent(
  91. f"""autoupload = ["{autouploadFile.filename}"] # list of strings, one for each sub autoupload file
  92. [videos]
  93. Episode1 = {{}} # Double curly braces to escape them for f-string
  94. """
  95. ) as videoFile:
  96. auto = autoupload.AutoUpload(videoFile.filename)
  97. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  98. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  99. auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
  100. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode2.mp4")
  101. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  102. # TODO: read file and check formatting and content?
  103. # https://stackoverflow.com/a/54053967
  104. class TestFileContent:
  105. def __init__(self, content):
  106. self.file = tempfile.NamedTemporaryFile(mode="w", delete=False)
  107. with self.file as f:
  108. f.write(content)
  109. @property
  110. def filename(self):
  111. return self.file.name
  112. def __enter__(self):
  113. return self
  114. def __exit__(self, type, value, traceback):
  115. os.unlink(self.filename)
  116. if __name__ == '__main__':
  117. unittest.main()