attribute.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* bender-tags: treemodel */
  6. 'use strict';
  7. import Attribute from '/ckeditor5/core/treemodel/attribute.js';
  8. describe( 'Attribute', () => {
  9. beforeEach( () => {
  10. Attribute._register = {};
  11. } );
  12. describe( 'constructor', () => {
  13. it( 'should create attribute', () => {
  14. let attr = new Attribute( 'foo', 'bar' );
  15. expect( attr ).to.have.property( 'key' ).that.equals( 'foo' );
  16. expect( attr ).to.have.property( 'value' ).that.equals( 'bar' );
  17. } );
  18. it( 'should create equal instance even if object has different order', () => {
  19. let attr1 = new Attribute( 'foo', { a: 1, b: 2 } );
  20. let attr2 = new Attribute( 'foo', { b: 2, a: 1 } );
  21. expect( attr1.isEqual( attr2 ) ).to.be.true;
  22. } );
  23. it( 'should return the same object for registered objects', () => {
  24. Attribute.register( 'register', true );
  25. let attr1 = new Attribute( 'register', true );
  26. let attr2 = new Attribute( 'register', true );
  27. expect( attr1 ).to.equal( attr2 );
  28. expect( attr1.isEqual( attr2 ) ).to.be.true;
  29. } );
  30. it( 'should return different objects for different values', () => {
  31. Attribute.register( 'register', true );
  32. let attr1 = new Attribute( 'register', true );
  33. let attr2 = new Attribute( 'register', false );
  34. expect( attr1 ).to.not.be.equals( attr2 );
  35. expect( attr1.isEqual( attr2 ) ).to.not.be.true;
  36. } );
  37. it( 'should return different objects for not registered objects', () => {
  38. Attribute.register( 'register', true );
  39. let attr1 = new Attribute( 'register', false );
  40. let attr2 = new Attribute( 'register', false );
  41. expect( attr1 ).to.not.be.equals( attr2 );
  42. expect( attr1.isEqual( attr2 ) ).to.be.true;
  43. } );
  44. } );
  45. describe( 'register', () => {
  46. it( 'Attribute.register should return registered attribute', () => {
  47. let attr1 = new Attribute( 'register', true );
  48. let attr2 = Attribute.register( 'register', true );
  49. let attr3 = Attribute.register( 'register', true );
  50. let attr4 = new Attribute( 'register', true );
  51. expect( attr1 ).to.not.be.equals( attr2 );
  52. expect( attr2 ).to.equal( attr3 );
  53. expect( attr3 ).to.equal( attr4 );
  54. } );
  55. } );
  56. } );