video.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { VideoMetadata, PublishedBeforeJoystream, MediaType, License } from '../src'
  2. import { assert, expect } from 'chai'
  3. describe('Video Metadata', () => {
  4. it('Message', () => {
  5. const meta = new VideoMetadata()
  6. const title = 'Video Title'
  7. const description = 'Video Description'
  8. const duration = 100
  9. meta.setTitle(title)
  10. meta.setDescription(description)
  11. meta.setDuration(duration)
  12. meta.setMediaPixelHeight(1)
  13. meta.setMediaPixelWidth(2)
  14. meta.setMediaType(new MediaType())
  15. meta.setLanguage('en')
  16. meta.setLicense(new License())
  17. meta.setPublishedBeforeJoystream(new PublishedBeforeJoystream())
  18. meta.setHasMarketing(true)
  19. meta.setIsPublic(true)
  20. meta.setIsExplicit(false)
  21. meta.setVideo(0)
  22. meta.setThumbnailPhoto(1)
  23. assert.deepEqual(meta.toObject(), {
  24. title,
  25. description,
  26. duration,
  27. mediaPixelHeight: 1,
  28. mediaPixelWidth: 2,
  29. mediaType: {
  30. codecName: undefined,
  31. container: undefined,
  32. mimeMediaType: undefined,
  33. },
  34. language: 'en',
  35. license: {
  36. code: undefined,
  37. attribution: undefined,
  38. customText: undefined,
  39. },
  40. publishedBeforeJoystream: { isPublished: undefined, date: undefined },
  41. hasMarketing: true,
  42. isPublic: true,
  43. isExplicit: false,
  44. thumbnailPhoto: 1,
  45. video: 0,
  46. })
  47. // sanity check - encoding / decoding works
  48. assert.deepEqual(VideoMetadata.deserializeBinary(meta.serializeBinary()), meta)
  49. })
  50. it('Message: PublishedBeforeJoystream', () => {
  51. const meta = new VideoMetadata()
  52. expect(meta.hasPublishedBeforeJoystream()).equals(false, 'PublishedBeforeJoystream field should NOT be set')
  53. const published = new PublishedBeforeJoystream()
  54. const isPublished = true
  55. const date = '1950-12-24'
  56. published.setIsPublished(isPublished)
  57. published.setDate(date)
  58. meta.setPublishedBeforeJoystream(published)
  59. // Field should now be set
  60. expect(meta.hasPublishedBeforeJoystream()).equals(true, 'PublishedBeforeJoystream field should be set')
  61. assert.deepEqual(published.toObject(), {
  62. isPublished,
  63. date,
  64. })
  65. })
  66. it('Message: Licence', () => {
  67. const license = new License()
  68. const code = 1000
  69. const attribution = 'Attribution Text'
  70. const customText = 'Custom License Details'
  71. license.setCode(code)
  72. license.setAttribution(attribution)
  73. license.setCustomText(customText)
  74. assert.deepEqual(license.toObject(), {
  75. code,
  76. attribution,
  77. customText,
  78. })
  79. })
  80. it('Message: MediaType', () => {
  81. const mediaType = new MediaType()
  82. const codecName = 'mpeg4'
  83. const container = 'avi'
  84. const mimeMediaType = 'videp/mp4'
  85. mediaType.setCodecName(codecName)
  86. mediaType.setContainer(container)
  87. mediaType.setMimeMediaType(mimeMediaType)
  88. assert.deepEqual(mediaType.toObject(), {
  89. codecName,
  90. container,
  91. mimeMediaType,
  92. })
  93. })
  94. })