tracked_change.test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // @ts-check
  2. const TrackedChange = require('../../lib/file_data/tracked_change')
  3. const Range = require('../../lib/range')
  4. const TrackingProps = require('../../lib/file_data/tracking_props')
  5. const { expect } = require('chai')
  6. describe('TrackedChange', function () {
  7. it('should survive serialization', function () {
  8. const trackedChange = new TrackedChange(
  9. new Range(1, 2),
  10. new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
  11. )
  12. const newTrackedChange = TrackedChange.fromRaw(trackedChange.toRaw())
  13. expect(newTrackedChange).to.be.instanceOf(TrackedChange)
  14. expect(newTrackedChange).to.deep.equal(trackedChange)
  15. })
  16. it('can be created from a raw object', function () {
  17. const trackedChange = TrackedChange.fromRaw({
  18. range: { pos: 1, length: 2 },
  19. tracking: {
  20. type: 'insert',
  21. userId: 'user1',
  22. ts: '2024-01-01T00:00:00.000Z',
  23. },
  24. })
  25. expect(trackedChange).to.be.instanceOf(TrackedChange)
  26. expect(trackedChange).to.deep.equal(
  27. new TrackedChange(
  28. new Range(1, 2),
  29. new TrackingProps(
  30. 'insert',
  31. 'user1',
  32. new Date('2024-01-01T00:00:00.000Z')
  33. )
  34. )
  35. )
  36. })
  37. it('can be serialized to a raw object', function () {
  38. const change = new TrackedChange(
  39. new Range(1, 2),
  40. new TrackingProps('insert', 'user1', new Date('2024-01-01T00:00:00.000Z'))
  41. )
  42. expect(change).to.be.instanceOf(TrackedChange)
  43. expect(change.toRaw()).to.deep.equal({
  44. range: { pos: 1, length: 2 },
  45. tracking: {
  46. type: 'insert',
  47. userId: 'user1',
  48. ts: '2024-01-01T00:00:00.000Z',
  49. },
  50. })
  51. })
  52. })