58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
|
import Debug from "debug";
|
||
|
import {Delta} from "../src/delta";
|
||
|
import {LastWriteWins} from "../src/last-write-wins";
|
||
|
import {Lossless} from "../src/lossless";
|
||
|
import {RhizomeNode} from "../src/node";
|
||
|
const debug = Debug('test:last-write-wins');
|
||
|
|
||
|
describe('Last write wins', () => {
|
||
|
|
||
|
describe('given that two separate writes occur', () => {
|
||
|
const node = new RhizomeNode();
|
||
|
const lossless = new Lossless(node);
|
||
|
|
||
|
const lossy = new LastWriteWins(lossless);
|
||
|
|
||
|
beforeAll(() => {
|
||
|
lossless.ingestDelta(new Delta({
|
||
|
creator: 'a',
|
||
|
host: 'h',
|
||
|
pointers: [{
|
||
|
localContext: "vegetable",
|
||
|
target: "broccoli",
|
||
|
targetContext: "want"
|
||
|
}, {
|
||
|
localContext: "desire",
|
||
|
target: 95,
|
||
|
}]
|
||
|
}));
|
||
|
|
||
|
lossless.ingestDelta(new Delta({
|
||
|
creator: 'a',
|
||
|
host: 'h',
|
||
|
pointers: [{
|
||
|
localContext: "vegetable",
|
||
|
target: "broccoli",
|
||
|
targetContext: "want"
|
||
|
}, {
|
||
|
localContext: "want",
|
||
|
target: 90,
|
||
|
}]
|
||
|
}));
|
||
|
});
|
||
|
|
||
|
it('our resolver should return the most recently written value', () => {
|
||
|
const result = lossy.resolve(["broccoli"]);
|
||
|
debug('result', result);
|
||
|
expect(result).toMatchObject({
|
||
|
broccoli: {
|
||
|
id: "broccoli",
|
||
|
properties: {
|
||
|
want: 90
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|