video.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. assert.deepEqual(meta.toObject(), {
  22. title,
  23. description,
  24. duration,
  25. mediaPixelHeight: 1,
  26. mediaPixelWidth: 2,
  27. mediaType: {
  28. codecName: undefined,
  29. container: undefined,
  30. mimeMediaType: undefined,
  31. },
  32. language: 'en',
  33. license: {
  34. code: undefined,
  35. attribution: undefined,
  36. customText: undefined,
  37. },
  38. publishedBeforeJoystream: { isPublished: undefined, timestamp: undefined },
  39. hasMarketing: true,
  40. isPublic: true,
  41. isExplicit: false,
  42. })
  43. // sanity check - encoding / decoding works
  44. assert.deepEqual(VideoMetadata.deserializeBinary(meta.serializeBinary()), meta)
  45. })
  46. it('Message: PublishedBeforeJoystream', () => {
  47. const meta = new VideoMetadata()
  48. expect(meta.hasPublishedBeforeJoystream()).equals(false, 'PublishedBeforeJoystream field should NOT be set')
  49. const published = new PublishedBeforeJoystream()
  50. const isPublished = true
  51. const timestamp = 10000
  52. published.setIsPublished(isPublished)
  53. published.setTimestamp(timestamp)
  54. meta.setPublishedBeforeJoystream(published)
  55. // Field should now be set
  56. expect(meta.hasPublishedBeforeJoystream()).equals(true, 'PublishedBeforeJoystream field should be set')
  57. assert.deepEqual(published.toObject(), {
  58. isPublished,
  59. timestamp,
  60. })
  61. })
  62. it('Message: Licence', () => {
  63. const license = new License()
  64. const code = 1000
  65. const attribution = 'Attribution Text'
  66. const customText = 'Custom License Details'
  67. license.setCode(code)
  68. license.setAttribution(attribution)
  69. license.setCustomText(customText)
  70. assert.deepEqual(license.toObject(), {
  71. code,
  72. attribution,
  73. customText,
  74. })
  75. })
  76. it('Message: MediaType', () => {
  77. const mediaType = new MediaType()
  78. const codecName = 'mpeg4'
  79. const container = 'avi'
  80. const mimeMediaType = 'videp/mp4'
  81. mediaType.setCodecName(codecName)
  82. mediaType.setContainer(container)
  83. mediaType.setMimeMediaType(mimeMediaType)
  84. assert.deepEqual(mediaType.toObject(), {
  85. codecName,
  86. container,
  87. mimeMediaType,
  88. })
  89. })
  90. })