test_myanimelist.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import pytest
  2. from myanimebot.myanimelist import break_rss_description_string, get_thumbnail
  3. from myanimebot.utils import MediaStatus
  4. def test_get_thumbnail():
  5. # Test manga
  6. try:
  7. link = "https://myanimelist.net/manga/103890/Bokutachi_wa_Benkyou_ga_Dekinai"
  8. expected_thumbnail = "https://cdn.myanimelist.net/images/manga/3/197080.jpg"
  9. assert get_thumbnail(link) == expected_thumbnail
  10. except Exception:
  11. pytest.fail("Should not raise Exception")
  12. # Test anime
  13. try:
  14. link = "https://myanimelist.net/anime/40028/Shingeki_no_Kyojin__The_Final_Season"
  15. expected_thumbnail = "https://cdn.myanimelist.net/images/anime/1000/110531.jpg"
  16. assert get_thumbnail(link) == expected_thumbnail
  17. except Exception:
  18. pytest.fail("Should not raise Exception")
  19. # Test anime 2
  20. try:
  21. link = "https://myanimelist.net/anime/40028"
  22. expected_thumbnail = "https://cdn.myanimelist.net/images/anime/1000/110531.jpg"
  23. assert get_thumbnail(link) == expected_thumbnail
  24. except Exception:
  25. pytest.fail("Should not raise Exception")
  26. # Test fail
  27. with pytest.raises(Exception):
  28. get_thumbnail('')
  29. with pytest.raises(Exception):
  30. get_thumbnail('https://myanimelist.net/anime/test/')
  31. with pytest.raises(Exception):
  32. get_thumbnail('https://anilist.co/anime/110277/Attack-on-Titan-Final-Season/')
  33. def test_break_rss_description_string():
  34. status, progress, episodes = break_rss_description_string('Completed - 12 of 12 episodes')
  35. assert status == MediaStatus.COMPLETED
  36. assert progress == '12'
  37. assert episodes == '12'
  38. status, progress, episodes = break_rss_description_string('Completed - 192 of 192 chapters')
  39. assert status == MediaStatus.COMPLETED
  40. assert progress == '192'
  41. assert episodes == '192'
  42. status, progress, episodes = break_rss_description_string('Paused - 24 of 192 chapters')
  43. assert status == MediaStatus.PAUSED
  44. assert progress == '24'
  45. assert episodes == '192'
  46. status, progress, episodes = break_rss_description_string('On-hold - 23 of 27 episodes')
  47. assert status == MediaStatus.PAUSED
  48. assert progress == '23'
  49. assert episodes == '27'
  50. status, progress, episodes = break_rss_description_string('Dropped - 17 of 11 episodes')
  51. assert status == MediaStatus.DROPPED
  52. assert progress == '17'
  53. assert episodes == '11'
  54. status, progress, episodes = break_rss_description_string('Watching - 1 of 2 episodes')
  55. assert status == MediaStatus.CURRENT
  56. assert progress == '1'
  57. assert episodes == '2'
  58. status, progress, episodes = break_rss_description_string('Reading - 192 of ? chapters')
  59. assert status == MediaStatus.CURRENT
  60. assert progress == '192'
  61. assert episodes == '?'
  62. status, progress, episodes = break_rss_description_string('Rewatching - 0 of 1 episodes')
  63. assert status == MediaStatus.REPEATING
  64. assert progress == '0'
  65. assert episodes == '1'
  66. # Incorrect cases
  67. status, progress, episodes = break_rss_description_string('Toto')
  68. assert status == None and progress == None and episodes == None
  69. status, progress, episodes = break_rss_description_string('Completed - blabla')
  70. assert status == None and progress == None and episodes == None
  71. status, progress, episodes = break_rss_description_string('Completed - 24 of 32')
  72. assert status == None and progress == None and episodes == None
  73. with pytest.raises(NotImplementedError):
  74. break_rss_description_string('Toto - 24 of 32 episodes')