parser_test.exs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. defmodule PodcastFeed.Provider.Archive.ParserTest do
  2. use ExUnit.Case
  3. alias PodcastFeed.Provider.Archive.Parser
  4. setup_all do
  5. json_metadata = "{\"created\":1590247789,\"d1\":\"ia601402.us.archive.org\",\"d2\":\"ia801402.us.archive.org\",\"dir\":\"/8/items/incontri-a-piano-terra\",\"files\":[{\"name\": \"metadata.json\",\"source\": \"original\",\"mtime\": \"1590258296\",\"size\": \"315\",\"md5\": \"a0c0e219cf3f13e54f2a4b3efef8e5c8\",\"crc32\": \"2d181b5c\",\"sha1\": \"8244b579a759edddd01c905dd11f8565e83d0898\",\"format\": \"JSON\"},{\"name\": \"cover.jpg\",\"source\": \"original\",\"mtime\": \"1590258445\",\"size\": \"10650\",\"md5\": \"15687b23e11f0099abbfe64eb1685c31\",\"crc32\": \"fbb1516a\",\"sha1\": \"98fa929c7554241cfa92bea8eba69b39c5d47603\",\"format\": \"JPEG\",\"rotation\": \"0\"},{\"name\":\"Confini mobili sulle alpi.mp3\",\"source\":\"original\",\"mtime\":\"1590135989\",\"size\":\"46933494\",\"md5\":\"e832ee9381a4f8af2d9727e2f49126ae\",\"crc32\":\"d709dd90\",\"sha1\":\"89c820a2dfd63cfbbf7aeefd191c653756b33fe3\",\"format\":\"VBR MP3\",\"length\":\"3902.35\",\"height\":\"0\",\"width\":\"0\",\"title\":\"Confini mobili sulle alpi (italian limes)\",\"creator\":\"APE Milano\",\"album\":\"Incontri a Piano Terra\",\"track\":\"02\",\"artist\":\"APE Milano\",\"genre\":\"podcast\"},{\"name\":\"Confini mobili sulle alpi.png\",\"source\":\"derivative\",\"format\":\"PNG\",\"original\":\"Confini mobili sulle alpi.mp3\",\"mtime\":\"1590137809\",\"size\":\"34656\",\"md5\":\"63893f9b00402a107682b5317e808523\",\"crc32\":\"b59ff609\",\"sha1\":\"a396716431cd0acedd243030093d0b31d792cfb3\"},{\"name\":\"Confini mobili sulle alpi_spectrogram.png\",\"source\":\"derivative\",\"format\":\"Spectrogram\",\"original\":\"Confini mobili sulle alpi.mp3\",\"mtime\":\"1590137854\",\"size\":\"273188\",\"md5\":\"557337665c6d9f962b2e91d169f25e1b\",\"crc32\":\"08b4b57c\",\"sha1\":\"88e088f9c4954aa8f0849b7e0d69cee8d7d42327\"}],\"files_count\":31,\"item_last_updated\":1590160774,\"item_size\":244544362,\"metadata\":{\"identifier\":\"incontri-a-piano-terra\",\"mediatype\":\"audio\",\"collection\":\"opensource_audio\",\"creator\":\"APE Milano\",\"description\":\"Qualche registrazione delle attivit\\u00e0 sociali che promuoviamo al Piano Terra di Milano\",\"language\":\"ita\",\"licenseurl\":\"https://creativecommons.org/licenses/by-nc-nd/4.0/\",\"scanner\":\"Internet Archive HTML5 Uploader 1.6.4\",\"subject\":[\"ape milano\",\"podcast\",\"montagna\"],\"title\":\"Incontri a Piano Terra\",\"uploader\":\"milanoape@gmail.com\",\"publicdate\":\"2020-05-22 08:30:21\",\"addeddate\":\"2020-05-22 08:30:21\",\"curation\":\"[curator]validator@archive.org[/curator][date]20200522085526[/date][comment]checked for malware[/comment]\"},\"server\":\"ia601402.us.archive.org\",\"uniq\":122833277,\"workable_servers\":[\"ia601402.us.archive.org\",\"ia801402.us.archive.org\"]}"
  6. json_custom = "{\"link\": \"http://www.ape-alveare.it/\",\"image\": {\"url\": \"http://www.ape-alveare.it/wp-content/themes/yootheme/cache/2018_logo_Ape_righe_trasparenza-d1aae6b9.png\",\"title\": \"APE Milano\",\"link\": \"http://www.ape-alveare.it/\"},\"category\": \"Montagna\",\"explicit\": \"no\" }"
  7. token = %Parser{
  8. identifier: "incontri-a-piano-terra",
  9. archive_metadata: Jason.decode!(json_metadata),
  10. custom_metadata: Jason.decode!(json_custom),
  11. }
  12. {:ok, token: token}
  13. end
  14. test "podcast data are correctly converted", state do
  15. %{podcast: podcast} = Parser.to_podcast_feed_data(state[:token])
  16. assert %{
  17. title: "Incontri a Piano Terra",
  18. description: "Qualche registrazione delle attività sociali che promuoviamo al Piano Terra di Milano",
  19. webmaster: "milanoape@gmail.com",
  20. managingEditor: "milanoape@gmail.com",
  21. owner: %{
  22. name: "APE Milano",
  23. email: "milanoape@gmail.com",
  24. },
  25. keywords: ["ape milano", "podcast", "montagna"],
  26. pubDate: ~U[2020-05-22 08:30:21Z],
  27. lastBuildDate: ~U[2020-05-22 15:19:34Z],
  28. author: "APE Milano",
  29. language: "ita",
  30. image: %{
  31. url: "http://www.ape-alveare.it/wp-content/themes/yootheme/cache/2018_logo_Ape_righe_trasparenza-d1aae6b9.png",
  32. title: "APE Milano",
  33. link: "http://www.ape-alveare.it/",
  34. },
  35. link: "http://www.ape-alveare.it/",
  36. category: "Montagna",
  37. explicit: "no",
  38. } == podcast
  39. end
  40. test "using first `original` image found on archive when image is missing on custom metadata", state do
  41. custom = %{state[:token].custom_metadata | "image" => %{
  42. "url" => nil,
  43. "title" => nil,
  44. "link" => nil,
  45. }}
  46. %{podcast: podcast} = Parser.to_podcast_feed_data(%Parser{state[:token] | custom_metadata: custom})
  47. assert %{
  48. image: %{
  49. url: "https://archive.org/download/incontri-a-piano-terra/cover.jpg",
  50. title: "Incontri a Piano Terra",
  51. link: "https://archive.org/details/incontri-a-piano-terra",
  52. },
  53. } = podcast
  54. end
  55. test "using archive item details as link when link is missing on custom metadata", state do
  56. custom = %{state[:token].custom_metadata | "link" => nil}
  57. %{podcast: podcast} = Parser.to_podcast_feed_data(%Parser{state[:token] | custom_metadata: custom})
  58. assert %{link: "https://archive.org/details/incontri-a-piano-terra"} = podcast
  59. end
  60. test "items data are correctly converted", state do
  61. %{items: items} = Parser.to_podcast_feed_data(state[:token])
  62. assert [
  63. %{
  64. title: "Confini mobili sulle alpi (italian limes)",
  65. description: "",
  66. pubDate: ~U[2020-05-22 08:26:29Z],
  67. link: "https://archive.org/download/incontri-a-piano-terra/Confini%20mobili%20sulle%20alpi.mp3",
  68. length: 3902,
  69. summary: "",
  70. keywords: ["Incontri a Piano Terra", "APE Milano", "podcast"],
  71. explicit: "no",
  72. # image: "https://archive.org/download/incontri-a-piano-terra/Confini%20mobili%20sulle%20alpi.png",
  73. image: nil,
  74. size: "46933494"
  75. }
  76. ] == items
  77. end
  78. end