core.element.tests.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Test the core element functionality
  2. describe('Core element tests', function() {
  3. it ('should transition model properties', function() {
  4. var element = new Chart.Element({
  5. _model: {
  6. numberProp: 0,
  7. numberProp2: 100,
  8. _underscoreProp: 0,
  9. stringProp: 'abc',
  10. objectProp: {
  11. myObject: true
  12. },
  13. colorProp: 'rgb(0, 0, 0)'
  14. }
  15. });
  16. // First transition clones model into view
  17. element.transition(0.25);
  18. expect(element._view).toEqual(element._model);
  19. expect(element._view).not.toBe(element._model);
  20. expect(element._view.objectProp).toBe(element._model.objectProp); // not cloned
  21. element._model.numberProp = 100;
  22. element._model.numberProp2 = 250;
  23. element._model._underscoreProp = 200;
  24. element._model.stringProp = 'def';
  25. element._model.newStringProp = 'newString';
  26. element._model.colorProp = 'rgb(255, 255, 0)';
  27. element.transition(0.25);
  28. expect(element._view).toEqual({
  29. numberProp: 25,
  30. numberProp2: 137.5,
  31. _underscoreProp: 0, // underscore props are not transition to a new value
  32. stringProp: 'def',
  33. newStringProp: 'newString',
  34. objectProp: {
  35. myObject: true
  36. },
  37. colorProp: 'rgb(64, 64, 0)',
  38. });
  39. // Final transition clones model into view
  40. element.transition(1);
  41. expect(element._view).toEqual(element._model);
  42. expect(element._view).not.toBe(element._model);
  43. });
  44. });