software-review-draft.test.ts 1.1 KB

12345678910111213141516171819202122232425262728
  1. import { expect, test } from "bun:test"
  2. import { reviewDraftKey, saveReviewDraft, takeReviewDraft } from "../src/util/software-review-draft"
  3. import type { Review } from "../src/util/software-review"
  4. test("selection drafts do not cross credentials and never restore into a finished task", () => {
  5. const connection = { url: "http://127.0.0.1:9999", apiKey: "synthetic-key" }
  6. const key = reviewDraftKey(connection, "draft-test")
  7. const other = reviewDraftKey({ ...connection, apiKey: "different-operator" }, "draft-test")
  8. const state: Review = {
  9. id: "draft-test",
  10. revision: 1,
  11. project: "Example",
  12. phase: "awaiting_selection",
  13. coverage: {},
  14. candidates: [],
  15. decisions: {},
  16. proposal: null,
  17. execution: null,
  18. }
  19. saveReviewDraft(key, { revision: 1, scope: "structure", decisions: {} })
  20. expect(takeReviewDraft(other, state)).toBeUndefined()
  21. expect(takeReviewDraft(key, { ...state, phase: "accepted_for_delivery" })).toEqual({
  22. status: "outdated",
  23. revision: 1,
  24. })
  25. expect(takeReviewDraft(key, state)).toBeUndefined()
  26. expect(key).not.toContain(connection.apiKey)
  27. })