iconview.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import IconView from '../../src/icon/iconview';
  6. describe( 'IconView', () => {
  7. let view;
  8. beforeEach( () => {
  9. view = new IconView();
  10. view.render();
  11. } );
  12. describe( 'constructor()', () => {
  13. it( 'sets #content', () => {
  14. expect( view.content ).to.equal( '' );
  15. } );
  16. it( 'sets #viewBox', () => {
  17. expect( view.viewBox ).to.equal( '0 0 20 20' );
  18. } );
  19. it( 'creates element from template', () => {
  20. expect( view.element.tagName ).to.equal( 'svg' );
  21. expect( view.element.getAttribute( 'class' ) ).to.equal( 'ck-icon' );
  22. expect( view.element.getAttribute( 'viewBox' ) ).to.equal( '0 0 20 20' );
  23. } );
  24. } );
  25. describe( '<svg> bindings', () => {
  26. describe( 'viewBox', () => {
  27. it( 'should react to changes in view#viewBox', () => {
  28. expect( view.element.getAttribute( 'viewBox' ) ).to.equal( '0 0 20 20' );
  29. view.viewBox = '1 2 3 4';
  30. expect( view.element.getAttribute( 'viewBox' ) ).to.equal( '1 2 3 4' );
  31. } );
  32. } );
  33. describe( 'inline svg', () => {
  34. it( 'should react to changes in view#content', () => {
  35. expect( view.element.innerHTML = '' );
  36. view.content = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"><g id="test"></g></svg>';
  37. expect( view.element.innerHTML = '<g id="test"></g>' );
  38. view.content = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>';
  39. expect( view.element.innerHTML = '' );
  40. } );
  41. it( 'works for #content with more than <svg> declaration', () => {
  42. expect( view.element.innerHTML = '' );
  43. view.content =
  44. '<?xml version="1.0" encoding="utf-8"?><svg version="1.1" xmlns="http://www.w3.org/2000/svg"><g id="test"></g></svg>';
  45. expect( view.element.innerHTML = '<g id="test"></g>' );
  46. } );
  47. it( 'should respect parsed <svg>\'s viewBox attribute', () => {
  48. expect( view.element.innerHTML = '' );
  49. view.content = '<svg version="1.1" viewBox="10 20 30 40" xmlns="http://www.w3.org/2000/svg"><g id="test"></g></svg>';
  50. expect( view.viewBox ).to.equal( '10 20 30 40' );
  51. } );
  52. } );
  53. } );
  54. } );