all files / tests/ ordered-elements_test.js

100% Statements 32/32
100% Branches 0/0
100% Functions 8/8
100% Lines 32/32
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76                                                                                       
import {assert} from 'chai';
 
import OrderedElements from '../src/ordered-elements';
 
describe("OrderedElements", () => {
    it("can identify elements it has", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        assert.equal(elems.has("a"), true);
    });
 
    it("can identify elements it does not have", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        assert.equal(elems.has("b"), false);
    });
 
    it("can get elements it has", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        assert.equal(elems.get("a"), 1);
    });
 
    it("adds new elements in order", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        elems.set("b", 2);
 
        assert.deepEqual({
            elements: {
                a: 1,
                b: 2,
            },
            keyOrder: ["a", "b"],
        }, elems);
    });
 
    it("overrides old elements but doesn't add to the key ordering", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        elems.set("a", 2);
 
        assert.deepEqual({
            elements: {
                a: 2,
            },
            keyOrder: ["a"],
        }, elems);
    });
 
    it("iterates over the elements in the correct order", () => {
        const elems = new OrderedElements();
 
        elems.set("a", 1);
        elems.set("b", 2);
        elems.set("c", 3);
 
        const order = [];
 
        elems.forEach((value, key) => {
            order.push([key, value]);
        });
 
        assert.deepEqual([
            ["a", 1],
            ["b", 2],
            ["c", 3],
        ], order);
    });
});