SnapContextSpec.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import SnapContext from 'lib/features/snapping/SnapContext';
  2. describe('snapping - SnapContext', function() {
  3. it('should add snap origins', function() {
  4. // given
  5. var context = new SnapContext();
  6. var topLeftOrigin = { x: 0, y: 50 },
  7. bottomRightOrigin = { x: 50, y: 100 };
  8. // when
  9. context.setSnapOrigin('top-left', topLeftOrigin);
  10. context.setSnapOrigin('bottom-right', bottomRightOrigin);
  11. // then
  12. expect(context.getSnapOrigin('top-left')).to.eql(topLeftOrigin);
  13. expect(context.getSnapOrigin('bottom-right')).to.eql(bottomRightOrigin);
  14. // snap locations are determined by origin add order
  15. expect(context.getSnapLocations()).to.eql([ 'top-left', 'bottom-right' ]);
  16. });
  17. it('should override snap locations', function() {
  18. // given
  19. var context = new SnapContext();
  20. context.setSnapOrigin('top-left', { x: 0, y: 50 });
  21. context.setSnapOrigin('bottom-right', { x: 50, y: 100 });
  22. // when
  23. context.setSnapLocations([ 'bottom-right', 'top-left' ]);
  24. // then
  25. // snap are overridden by custom order
  26. expect(context.getSnapLocations()).to.eql([ 'bottom-right', 'top-left' ]);
  27. });
  28. describe('snap points', function() {
  29. it('should provide per target snap points', function() {
  30. // given
  31. var context = new SnapContext();
  32. context.setSnapOrigin('mid', { x: 0, y: 50 });
  33. // when
  34. var snapPointsFoo = context.pointsForTarget('Foo'),
  35. snapPointsBar = context.pointsForTarget({ id: 'Bar' });
  36. // then
  37. expect(snapPointsFoo).to.exist;
  38. expect(snapPointsBar).to.exist;
  39. });
  40. it('should not snap', function() {
  41. // given
  42. var context = new SnapContext();
  43. context.setSnapOrigin('mid', { x: 0, y: 50 });
  44. // when
  45. var snapPoints = context.pointsForTarget('Foo');
  46. // then
  47. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'x')).not.to.exist;
  48. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'y')).not.to.exist;
  49. });
  50. it('should snap', function() {
  51. // given
  52. var context = new SnapContext();
  53. context.setSnapOrigin('mid', { x: 0, y: 50 });
  54. var snapPoints = context.pointsForTarget('Foo');
  55. // when
  56. snapPoints.add('mid', { x: 15, y: 50 });
  57. // then
  58. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'x')).to.eql(15);
  59. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'y')).not.to.exist;
  60. });
  61. it('should snap default point', function() {
  62. // given
  63. var context = new SnapContext();
  64. context.setSnapOrigin('mid', { x: 0, y: 50 });
  65. context.addDefaultSnap('mid', { x: 15, y: 50 });
  66. // when
  67. var snapPoints = context.pointsForTarget('Foo');
  68. // then
  69. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'x')).to.eql(15);
  70. expect(snapPoints.snap({ x: 10, y: 10 }, 'mid', 'y')).not.to.exist;
  71. });
  72. });
  73. });