media_test.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. // Copyright 2009 The Closure Library Authors. All Rights Reserved.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS-IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. goog.provide('goog.ui.media.MediaTest');
  15. goog.setTestOnly('goog.ui.media.MediaTest');
  16. goog.require('goog.dom');
  17. goog.require('goog.dom.TagName');
  18. goog.require('goog.html.testing');
  19. goog.require('goog.math.Size');
  20. goog.require('goog.testing.jsunit');
  21. goog.require('goog.ui.ControlRenderer');
  22. goog.require('goog.ui.media.Media');
  23. goog.require('goog.ui.media.MediaModel');
  24. goog.require('goog.ui.media.MediaRenderer');
  25. var control; // The name 'media' collides with a built-in var in Chrome.
  26. var renderer;
  27. var model;
  28. function setUp() {
  29. renderer = new goog.ui.media.MediaRenderer();
  30. model = new goog.ui.media.MediaModel(
  31. 'http://url.com', 'a caption', 'a description');
  32. control = new goog.ui.media.Media(model, renderer);
  33. }
  34. function tearDown() {
  35. control.dispose();
  36. }
  37. function testBasicElements() {
  38. var model = new goog.ui.media.MediaModel(
  39. 'http://url.com', 'a caption', 'a description');
  40. var thumb1 = new goog.ui.media.MediaModel.Thumbnail(
  41. 'http://thumb.com/small.jpg', new goog.math.Size(320, 288));
  42. var thumb2 = new goog.ui.media.MediaModel.Thumbnail(
  43. 'http://thumb.com/big.jpg', new goog.math.Size(800, 600));
  44. model.setThumbnails([thumb1, thumb2]);
  45. model.setPlayer(
  46. new goog.ui.media.MediaModel.Player(
  47. goog.html.testing.newTrustedResourceUrlForTest(
  48. 'http://media/player.swf')));
  49. var control = new goog.ui.media.Media(model, renderer);
  50. control.render();
  51. var caption = goog.dom.getElementsByTagNameAndClass(
  52. undefined, goog.ui.ControlRenderer.CSS_CLASS + '-caption');
  53. var description = goog.dom.getElementsByTagNameAndClass(
  54. undefined, goog.ui.ControlRenderer.CSS_CLASS + '-description');
  55. var thumbnail0 = goog.dom.getElementsByTagNameAndClass(
  56. goog.dom.TagName.IMG, goog.ui.ControlRenderer.CSS_CLASS + '-thumbnail0');
  57. var thumbnail1 = goog.dom.getElementsByTagNameAndClass(
  58. goog.dom.TagName.IMG, goog.ui.ControlRenderer.CSS_CLASS + '-thumbnail1');
  59. var player = goog.dom.getElementsByTagNameAndClass(
  60. goog.dom.TagName.IFRAME, goog.ui.ControlRenderer.CSS_CLASS + '-player');
  61. assertNotNull(caption);
  62. assertEquals(1, caption.length);
  63. assertNotNull(description);
  64. assertEquals(1, description.length);
  65. assertNotNull(thumbnail0);
  66. assertEquals(1, thumbnail0.length);
  67. assertEquals('320px', thumbnail0[0].style.width);
  68. assertEquals('288px', thumbnail0[0].style.height);
  69. assertEquals('http://thumb.com/small.jpg', thumbnail0[0].src);
  70. assertNotNull(thumbnail1);
  71. assertEquals(1, thumbnail1.length);
  72. assertEquals('800px', thumbnail1[0].style.width);
  73. assertEquals('600px', thumbnail1[0].style.height);
  74. assertEquals('http://thumb.com/big.jpg', thumbnail1[0].src);
  75. // players are only shown when media is selected
  76. assertNotNull(player);
  77. assertEquals(0, player.length);
  78. control.dispose();
  79. }
  80. function testDoesntCreatesCaptionIfUnavailable() {
  81. var incompleteModel = new goog.ui.media.MediaModel(
  82. 'http://url.com', undefined, 'a description');
  83. incompleteMedia = new goog.ui.media.Media('', renderer);
  84. incompleteMedia.setDataModel(incompleteModel);
  85. incompleteMedia.render();
  86. var caption = goog.dom.getElementsByTagNameAndClass(
  87. undefined, goog.ui.ControlRenderer.CSS_CLASS + '-caption');
  88. var description = goog.dom.getElementsByTagNameAndClass(
  89. undefined, goog.ui.ControlRenderer.CSS_CLASS + '-description');
  90. assertEquals(0, caption.length);
  91. assertNotNull(description);
  92. incompleteMedia.dispose();
  93. }
  94. function testSetAriaLabel() {
  95. var model = new goog.ui.media.MediaModel(
  96. 'http://url.com', 'a caption', 'a description');
  97. var thumb1 = new goog.ui.media.MediaModel.Thumbnail(
  98. 'http://thumb.com/small.jpg', new goog.math.Size(320, 288));
  99. var thumb2 = new goog.ui.media.MediaModel.Thumbnail(
  100. 'http://thumb.com/big.jpg', new goog.math.Size(800, 600));
  101. model.setThumbnails([thumb1, thumb2]);
  102. model.setPlayer(
  103. new goog.ui.media.MediaModel.Player(
  104. goog.html.testing.newTrustedResourceUrlForTest(
  105. 'http://media/player.swf')));
  106. var control = new goog.ui.media.Media(model, renderer);
  107. assertNull(
  108. 'Media must not have aria label by default', control.getAriaLabel());
  109. control.setAriaLabel('My media');
  110. control.render();
  111. var element = control.getElementStrict();
  112. assertNotNull('Element must not be null', element);
  113. assertEquals(
  114. 'Media element must have expected aria-label', 'My media',
  115. element.getAttribute('aria-label'));
  116. assertTrue(goog.dom.isFocusableTabIndex(element));
  117. control.setAriaLabel('My new media');
  118. assertEquals(
  119. 'Media element must have updated aria-label', 'My new media',
  120. element.getAttribute('aria-label'));
  121. }