work.suroh.tk/node_modules/@11ty/eleventy/test/MergeTest.js

148 lines
2.3 KiB
JavaScript

import test from "ava";
import Merge from "../src/Util/Merge";
test("Shallow Merge", t => {
t.deepEqual(Merge({}, {}), {});
t.deepEqual(Merge({ a: 1 }, { a: 2 }), { a: 2 });
t.deepEqual(Merge({ a: 1 }, { a: 2 }, { a: 3 }), { a: 3 });
t.deepEqual(Merge({ a: 1 }, { b: 1 }), { a: 1, b: 1 });
t.deepEqual(Merge({ a: 1 }, { b: 1 }, { c: 1 }), { a: 1, b: 1, c: 1 });
t.deepEqual(Merge({ a: [1] }, { a: [2] }), { a: [1, 2] });
});
test("Invalid", t => {
t.deepEqual(Merge({}, 1), {});
t.deepEqual(Merge({}, [1]), {});
t.deepEqual(Merge({}, "string"), {});
});
test("Deep", t => {
t.deepEqual(Merge({ a: { b: 1 } }, { a: { c: 1 } }), { a: { b: 1, c: 1 } });
});
test("Deep, override: prefix", t => {
t.deepEqual(Merge({ a: { b: [1, 2] } }, { a: { b: [3, 4] } }), {
a: { b: [1, 2, 3, 4] }
});
t.deepEqual(Merge({ a: [1] }, { a: [2] }), { a: [1, 2] });
t.deepEqual(Merge({ a: [1] }, { "override:a": [2] }), { a: [2] });
t.deepEqual(Merge({ a: { b: [1, 2] } }, { a: { "override:b": [3, 4] } }), {
a: { b: [3, 4] }
});
});
test("Deep, override: prefix at root", t => {
t.deepEqual(Merge({ "override:a": [1] }, { a: [2] }), { a: [1, 2] });
});
test("Deep, override: prefix at other placements", t => {
t.deepEqual(
Merge(
{
a: {
a: [1]
}
},
{
a: {
a: [2]
}
}
),
{
a: {
a: [1, 2]
}
}
);
t.deepEqual(
Merge(
{
a: {
a: [1]
}
},
{
a: {
"override:a": [2]
}
}
),
{
a: {
a: [2]
}
}
);
t.deepEqual(
Merge(
{
"override:a": {
a: [1]
}
},
{
a: {
a: [2]
}
}
),
{
a: {
a: [1, 2]
}
}
);
t.deepEqual(
Merge(
{
a: {
a: [1],
b: [1]
}
},
{
"override:a": {
a: [2]
}
}
),
{
a: {
a: [2]
}
}
);
t.deepEqual(
Merge(
{
a: {
a: {
a: [1]
}
}
},
{
a: {
"override:a": {
a: [2]
}
}
}
),
{
a: {
a: {
a: [2]
}
}
}
);
});