deno.land / x / replicache@v10.0.0-beta.0 / db / visitor.test.ts

visitor.test.ts
نووسراو ببینە
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import {expect} from '@esm-bundle/chai';import * as dag from '../dag/mod';import { addGenesis, addIndexChange, addLocal, addSnapshot, Chain,} from './test-helpers';import {fakeHash} from '../hash';import type {Node} from '../btree/node';import type {ReadonlyJSONValue} from '../json';import {Visitor} from './visitor';import {Commit, Meta, newLocal} from './commit';
test('test that we get to the data nodes', async () => { const dagStore = new dag.TestStore();
const log: ReadonlyJSONValue[] = []; const chain: Chain = [];
class TestVisitor extends Visitor { override async visitBTreeNodeChunk(chunk: dag.Chunk<Node>) { log.push(chunk.data[1]); } }
const t = async (commit: Commit<Meta>, expected: ReadonlyJSONValue[]) => { log.length = 0; await dagStore.withRead(async dagRead => { const visitor = new TestVisitor(dagRead); await visitor.visitCommit(commit.chunk.hash); expect(log).to.deep.equal(expected); }); };
await addGenesis(chain, dagStore); await t(chain[0], [[]]);
await addLocal(chain, dagStore); await t(chain[1], [[['local', '1']], []]);
await addIndexChange(chain, dagStore); await t(chain[2], [[['local', '1']], [['\u00001\u0000local', '1']], []]);
await addLocal(chain, dagStore); await t(chain[3], [ [['local', '3']], [['\u00003\u0000local', '3']], [['local', '1']], [['\u00001\u0000local', '1']], [], ]);
await addSnapshot(chain, dagStore, [['k', 42]]); await t(chain[4], [ [ ['k', 42], ['local', '3'], ], [['\u00003\u0000local', '3']], ]);
// await addLocal(chain, dagStore); // const syncChain = await addSyncSnapshot(chain, dagStore, chain.length - 1); // await t(syncChain[0], [ // [ // ['k', 42], // ['local', '3'], // ], // [['\u00005\u0000local', '5']], // [['\u00003\u0000local', '3']], // ]);
const localCommit = await dagStore.withWrite(async dagWrite => { const prevCommit = chain[chain.length - 1]; const localCommit = newLocal( dagWrite.createChunk, prevCommit.chunk.hash, 42, 'mutname', [], fakeHash('none'), prevCommit.valueHash, prevCommit.indexes, 88, ); await dagWrite.putChunk(localCommit.chunk); await dagWrite.setHead('test', localCommit.chunk.hash); await dagWrite.commit(); return localCommit; }); await t(localCommit, [ [ ['k', 42], ['local', '3'], ], [['\u00003\u0000local', '3']], ]);
const localCommit2 = await dagStore.withWrite(async dagWrite => { const prevCommit = chain[chain.length - 1]; const localCommit2 = newLocal( dagWrite.createChunk, prevCommit.chunk.hash, 42, 'mutname', [], localCommit.chunk.hash, prevCommit.valueHash, prevCommit.indexes, 88, ); await dagWrite.putChunk(localCommit2.chunk); await dagWrite.setHead('test2', localCommit2.chunk.hash); await dagWrite.commit(); return localCommit2; }); await t(localCommit2, [ [ ['k', 42], ['local', '3'], ], [['\u00003\u0000local', '3']], ]);});
replicache

Version Info

Tagged at
2 years ago