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.

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