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.

121 lines
3.8 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 test_nextVideo(self):
  11. with TestFileContent(
  12. """[videos]
  13. Episode1 = {}
  14. """
  15. ) as videoFile:
  16. auto = autoupload.AutoUpload(videoFile.filename)
  17. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  18. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  19. def test_nextVideoSubfolder(self):
  20. with TestFileContent(
  21. """[videos]
  22. "subfolder/Episode1" = {}
  23. """
  24. ) as videoFile:
  25. auto = autoupload.AutoUpload(videoFile.filename)
  26. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/subfolder/Episode1.mp4")
  27. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/subfolder/Episode1.mp4")
  28. def test_success(self):
  29. with TestFileContent(
  30. """[videos]
  31. Episode1 = {}
  32. """
  33. ) as videoFile:
  34. auto = autoupload.AutoUpload(videoFile.filename)
  35. auto.nextVideo(self.platform1)
  36. auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
  37. self.assertEqual(auto.nextVideo(self.platform1), False)
  38. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  39. # TODO: read file and check formatting and content?
  40. # print("content of file")
  41. # with open(videoFile.filename, "r") as file:
  42. # print(file.readlines())
  43. def test_error(self):
  44. with TestFileContent(
  45. """[videos]
  46. Episode1 = {}
  47. """
  48. ) as videoFile:
  49. auto = autoupload.AutoUpload(videoFile.filename)
  50. auto.nextVideo(self.platform1)
  51. auto.error(self.platform1, "https://platform/url")
  52. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  53. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  54. # TODO: read file and check formatting and content?
  55. # print("content of file")
  56. # with open(videoFile.filename, "r") as file:
  57. # print(file.readlines())
  58. def test_errorThenSuccess(self):
  59. with TestFileContent(
  60. """[videos]
  61. Episode1 = {}
  62. """
  63. ) as videoFile:
  64. auto = autoupload.AutoUpload(videoFile.filename)
  65. auto.nextVideo(self.platform1)
  66. auto.error(self.platform1, "https://platform/url")
  67. self.assertEqual(auto.nextVideo(self.platform1), "/tmp/Episode1.mp4")
  68. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  69. # TODO: read file and check formatting and content?
  70. print("content of file")
  71. with open(videoFile.filename, "r") as file:
  72. print(file.readlines())
  73. auto.success(self.platform1, "https://platform/url", datetime(2020, 8, 28, 17, 54, 31))
  74. self.assertEqual(auto.nextVideo(self.platform1), False)
  75. self.assertEqual(auto.nextVideo(self.platform2), "/tmp/Episode1.mp4")
  76. # TODO: read file and check formatting and content?
  77. # TODO: check the key "platform-error" is not present after a success
  78. print("content of file")
  79. with open(videoFile.filename, "r") as file:
  80. print(file.readlines())
  81. # https://stackoverflow.com/a/54053967
  82. class TestFileContent:
  83. def __init__(self, content):
  84. self.file = tempfile.NamedTemporaryFile(mode="w", delete=False)
  85. with self.file as f:
  86. f.write(content)
  87. @property
  88. def filename(self):
  89. return self.file.name
  90. def __enter__(self):
  91. return self
  92. def __exit__(self, type, value, traceback):
  93. os.unlink(self.filename)
  94. if __name__ == '__main__':
  95. unittest.main()