summaryrefslogtreecommitdiffstats
path: root/browser/components/newtab/test/unit/common/Dedupe.test.js
blob: 1c85eafa50a40ea286b8c70dd0bfecacf3e45a78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Dedupe } from "common/Dedupe.sys.mjs";

describe("Dedupe", () => {
  let instance;
  beforeEach(() => {
    instance = new Dedupe();
  });
  describe("group", () => {
    it("should remove duplicates inside the groups", () => {
      const beforeItems = [
        [1, 1, 1],
        [2, 2, 2],
        [3, 3, 3],
      ];
      const afterItems = [[1], [2], [3]];
      assert.deepEqual(instance.group(...beforeItems), afterItems);
    });
    it("should remove duplicates between groups, favouring earlier groups", () => {
      const beforeItems = [
        [1, 2, 3],
        [2, 3, 4],
        [3, 4, 5],
      ];
      const afterItems = [[1, 2, 3], [4], [5]];
      assert.deepEqual(instance.group(...beforeItems), afterItems);
    });
    it("should remove duplicates from groups of objects", () => {
      instance = new Dedupe(item => item.id);
      const beforeItems = [
        [{ id: 1 }, { id: 1 }, { id: 2 }],
        [{ id: 1 }, { id: 3 }, { id: 2 }],
        [{ id: 1 }, { id: 2 }, { id: 5 }],
      ];
      const afterItems = [[{ id: 1 }, { id: 2 }], [{ id: 3 }], [{ id: 5 }]];
      assert.deepEqual(instance.group(...beforeItems), afterItems);
    });
  });
});