composite_delta.test.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import * as _ from "lodash";
  2. import {
  3. NodeCreation,
  4. NodeDeletion,
  5. } from "./primitive_delta";
  6. import {
  7. CompositeLevel,
  8. } from "./composite_delta";
  9. import {
  10. mockUuid,
  11. assert,
  12. } from "./test_helpers";
  13. describe("Composite delta", () => {
  14. it("Dependency", () => {
  15. const getId = mockUuid();
  16. const level = new CompositeLevel();
  17. const nodeCreation = new NodeCreation(getId());
  18. const composite1 = level.createComposite([nodeCreation]);
  19. assert(_.isEqual(composite1.getDependencies(), []), "expected composite1 to have no dependencies");
  20. const nodeDeletion = new NodeDeletion(nodeCreation, [], []);
  21. const nodeCreation2 = new NodeCreation(getId());
  22. const composite2 = level.createComposite([nodeDeletion, nodeCreation2]);
  23. assert(_.isEqual(composite2.getDependencies(), [composite1]), "expected composite2 to depend on composite 1");
  24. });
  25. it("Conflict", () => {
  26. const getId = mockUuid();
  27. const level = new CompositeLevel();
  28. const nodeCreation = new NodeCreation(getId());
  29. const compositeCreate = level.createComposite([nodeCreation]);
  30. const nodeDeletion1 = new NodeDeletion(nodeCreation, [], []);
  31. const compositeDelete1 = level.createComposite([nodeDeletion1]);
  32. assert(_.isEqual(compositeDelete1.getConflicts(), []), "there should not yet be a conflict")
  33. const nodeDeletion2 = new NodeDeletion(nodeCreation, [], []);
  34. const compositeDelete2 = level.createComposite([nodeDeletion2]);
  35. assert(_.isEqual(compositeDelete1.getConflicts(), [compositeDelete2]), "expected compositeDelete1 to conflict with compositeDelete2");
  36. assert(_.isEqual(compositeDelete2.getConflicts(), [compositeDelete1]), "expected compositeDelete1 to conflict with compositeDelete2");
  37. });
  38. // This was added after I found a bug:
  39. it("Dependency within composite", () => {
  40. const getId = mockUuid();
  41. const level = new CompositeLevel();
  42. const nodeCreation = new NodeCreation(getId());
  43. const nodeDeletion = new NodeDeletion(nodeCreation, [], []);
  44. const composite = level.createComposite([nodeCreation, nodeDeletion]);
  45. assert(_.isEqual(composite.getDependencies(), []), "expected composite to have no dependencies");
  46. assert(_.isEqual(composite.getConflicts(), []), "expected composite to have no conflicts");
  47. });
  48. });