@fireproof/core 0.19.99 → 0.19.101
Sign up to get free protection for your applications and to get access to all the features.
- package/{chunk-OFGPKRCM.js → chunk-3EB3ENHT.js} +54 -25
- package/chunk-3EB3ENHT.js.map +1 -0
- package/chunk-HQ7D3PEU.js +61 -0
- package/chunk-HQ7D3PEU.js.map +1 -0
- package/chunk-PZ5AY32C.js +10 -0
- package/deno-filesystem-Q2IJ7YDR.js +57 -0
- package/deno-filesystem-Q2IJ7YDR.js.map +1 -0
- package/deno.json +3 -1
- package/{gateway-5FCWPX5W.js → gateway-GK5QZ6KP.js} +13 -12
- package/gateway-GK5QZ6KP.js.map +1 -0
- package/{gateway-H7UD6TNB.js → gateway-TQTGDRCN.js} +9 -8
- package/gateway-TQTGDRCN.js.map +1 -0
- package/index.cjs +2232 -1781
- package/index.cjs.map +1 -1
- package/index.d.cts +261 -117
- package/index.d.ts +261 -117
- package/index.global.js +12776 -11829
- package/index.global.js.map +1 -1
- package/index.js +1936 -1579
- package/index.js.map +1 -1
- package/{key-bag-file-WADZBHYG.js → key-bag-file-VOSSK46F.js} +4 -3
- package/{key-bag-file-WADZBHYG.js.map → key-bag-file-VOSSK46F.js.map} +1 -1
- package/{key-bag-indexdb-PGVAI3FJ.js → key-bag-indexdb-AXTQOSMC.js} +4 -3
- package/{key-bag-indexdb-PGVAI3FJ.js.map → key-bag-indexdb-AXTQOSMC.js.map} +1 -1
- package/key-bag-memory-LWE6ARPX.js +29 -0
- package/key-bag-memory-LWE6ARPX.js.map +1 -0
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -1
- package/{node-filesystem-INX4ZTHE.js → node-filesystem-CFRXFSO7.js} +6 -9
- package/node-filesystem-CFRXFSO7.js.map +1 -0
- package/package.json +4 -2
- package/tests/blockstore/keyed-crypto-indexdb-file.test.ts +129 -0
- package/tests/blockstore/keyed-crypto.test.ts +63 -227
- package/tests/blockstore/loader.test.ts +19 -11
- package/tests/blockstore/store.test.ts +23 -19
- package/tests/blockstore/transaction.test.ts +12 -12
- package/tests/fireproof/all-gateway.test.ts +201 -193
- package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +324 -316
- package/tests/fireproof/crdt.test.ts +67 -16
- package/tests/fireproof/database.test.ts +183 -21
- package/tests/fireproof/fireproof.test.ts +83 -74
- package/tests/fireproof/hello.test.ts +18 -14
- package/tests/fireproof/indexer.test.ts +53 -43
- package/tests/fireproof/utils.test.ts +18 -6
- package/tests/gateway/file/loader-config.test.ts +303 -0
- package/tests/gateway/indexdb/loader-config.test.ts +75 -0
- package/tests/helpers.ts +27 -9
- package/tests/react/useFireproof.test.tsx +1 -1
- package/{utils-QO2HIWGI.js → utils-STA2C35G.js} +4 -3
- package/utils-STA2C35G.js.map +1 -0
- package/chunk-OFGPKRCM.js.map +0 -1
- package/chunk-WS3YRPIA.js +0 -75
- package/chunk-WS3YRPIA.js.map +0 -1
- package/gateway-5FCWPX5W.js.map +0 -1
- package/gateway-H7UD6TNB.js.map +0 -1
- package/mem-filesystem-YPPJV7Q2.js +0 -41
- package/mem-filesystem-YPPJV7Q2.js.map +0 -1
- package/node-filesystem-INX4ZTHE.js.map +0 -1
- package/tests/fireproof/config.test.ts +0 -172
- /package/{utils-QO2HIWGI.js.map → chunk-PZ5AY32C.js.map} +0 -0
- /package/tests/fireproof/{fireproof.test.fixture.ts → fireproof.fixture.ts} +0 -0
@@ -1,8 +1,21 @@
|
|
1
|
-
import { mockSuperThis, sleep } from "../helpers.js";
|
2
|
-
import { docs } from "./fireproof.
|
1
|
+
import { mockSuperThis, sleep, storageURL } from "../helpers.js";
|
2
|
+
import { docs } from "./fireproof.fixture.js";
|
3
3
|
import { CID } from "multiformats/cid";
|
4
4
|
|
5
|
-
import {
|
5
|
+
import {
|
6
|
+
ConfigOpts,
|
7
|
+
Database,
|
8
|
+
DatabaseFactory,
|
9
|
+
DocResponse,
|
10
|
+
DocWithId,
|
11
|
+
Index,
|
12
|
+
IndexRows,
|
13
|
+
MapFn,
|
14
|
+
bs,
|
15
|
+
fireproof,
|
16
|
+
index,
|
17
|
+
isDatabase,
|
18
|
+
} from "@fireproof/core";
|
6
19
|
|
7
20
|
export function carLogIncludesGroup(list: bs.AnyLink[], cid: CID) {
|
8
21
|
return list.some((c) => c.equals(cid));
|
@@ -84,7 +97,7 @@ describe("public API", function () {
|
|
84
97
|
});
|
85
98
|
it("should be a database instance", function () {
|
86
99
|
expect(db).toBeTruthy();
|
87
|
-
expect(db
|
100
|
+
expect(isDatabase(db)).toBeTruthy();
|
88
101
|
});
|
89
102
|
it("should put", function () {
|
90
103
|
expect(ok).toBeTruthy();
|
@@ -113,7 +126,7 @@ describe("basic database", function () {
|
|
113
126
|
});
|
114
127
|
beforeEach(async function () {
|
115
128
|
await sthis.start();
|
116
|
-
db =
|
129
|
+
db = DatabaseFactory("test-basic");
|
117
130
|
});
|
118
131
|
it("can put with id", async function () {
|
119
132
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
@@ -129,7 +142,7 @@ describe("basic database", function () {
|
|
129
142
|
it("can define an index", async function () {
|
130
143
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
131
144
|
expect(ok).toBeTruthy();
|
132
|
-
const idx = index<string, { foo: string }>(
|
145
|
+
const idx = index<string, { foo: string }>(db, "test-index", (doc) => doc.foo);
|
133
146
|
const result = await idx.query();
|
134
147
|
expect(result).toBeTruthy();
|
135
148
|
expect(result.rows).toBeTruthy();
|
@@ -139,7 +152,7 @@ describe("basic database", function () {
|
|
139
152
|
it("can define an index with a default function", async function () {
|
140
153
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
141
154
|
expect(ok).toBeTruthy();
|
142
|
-
const idx = index(
|
155
|
+
const idx = index(db, "foo");
|
143
156
|
const result = await idx.query();
|
144
157
|
expect(result).toBeTruthy();
|
145
158
|
expect(result.rows).toBeTruthy();
|
@@ -178,14 +191,14 @@ describe("benchmarking with compaction", function () {
|
|
178
191
|
beforeEach(async function () {
|
179
192
|
// erase the existing test data
|
180
193
|
await sthis.start();
|
181
|
-
db =
|
194
|
+
db = DatabaseFactory("test-benchmark-compaction", { autoCompact: 3 });
|
182
195
|
});
|
183
|
-
it("insert during compaction", async function () {
|
196
|
+
it.skip("insert during compaction", async function () {
|
184
197
|
const ok = await db.put({ _id: "test", foo: "fast" });
|
185
198
|
expect(ok).toBeTruthy();
|
186
199
|
expect(ok.id).toBe("test");
|
187
|
-
expect(db.
|
188
|
-
expect(db.
|
200
|
+
expect(db.crdt.clock.head).toBeTruthy();
|
201
|
+
expect(db.crdt.clock.head.length).toBe(1);
|
189
202
|
|
190
203
|
const numDocs = 20;
|
191
204
|
const batchSize = 5;
|
@@ -206,7 +219,7 @@ describe("benchmarking with compaction", function () {
|
|
206
219
|
}),
|
207
220
|
);
|
208
221
|
}
|
209
|
-
const blocks = db.
|
222
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
210
223
|
const loader = blocks.loader;
|
211
224
|
expect(loader).toBeTruthy();
|
212
225
|
|
@@ -233,8 +246,8 @@ describe("benchmarking a database", function () {
|
|
233
246
|
beforeEach(async function () {
|
234
247
|
await sthis.start();
|
235
248
|
// erase the existing test data
|
236
|
-
db =
|
237
|
-
// db =
|
249
|
+
db = DatabaseFactory("test-benchmark", { autoCompact: 100000, public: true });
|
250
|
+
// db = DatabaseFactory(null, {autoCompact: 100000})
|
238
251
|
});
|
239
252
|
|
240
253
|
// run benchmarking tests
|
@@ -247,8 +260,8 @@ describe("benchmarking a database", function () {
|
|
247
260
|
expect(ok).toBeTruthy();
|
248
261
|
expect(ok.id).toBe("test");
|
249
262
|
|
250
|
-
expect(db.
|
251
|
-
expect(db.
|
263
|
+
expect(db.crdt.clock.head).toBeTruthy();
|
264
|
+
expect(db.crdt.clock.head.length).toBe(1);
|
252
265
|
|
253
266
|
const numDocs = 2500;
|
254
267
|
const batchSize = 500;
|
@@ -284,7 +297,7 @@ describe("benchmarking a database", function () {
|
|
284
297
|
// equals(allDocsResult2.rows.length, numDocs+1)
|
285
298
|
|
286
299
|
// console.time("open new DB");
|
287
|
-
const newDb =
|
300
|
+
const newDb = DatabaseFactory("test-benchmark", { autoCompact: 100000, public: true });
|
288
301
|
const doc = await newDb.get<{ foo: string }>("test");
|
289
302
|
expect(doc.foo).toBe("fast");
|
290
303
|
// console.timeEnd("open new DB");
|
@@ -314,7 +327,7 @@ describe("benchmarking a database", function () {
|
|
314
327
|
await db.put({ _id: "compacted-test", foo: "bar" });
|
315
328
|
|
316
329
|
// console.log('car log length', db._crdt.blockstore.loader.carLog.length)
|
317
|
-
const blocks = db.
|
330
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
318
331
|
const loader = blocks.loader;
|
319
332
|
expect(loader).toBeTruthy();
|
320
333
|
expect(loader.carLog.length).toBe(2);
|
@@ -326,10 +339,10 @@ describe("benchmarking a database", function () {
|
|
326
339
|
await sleep(100);
|
327
340
|
|
328
341
|
// console.time("compacted reopen again");
|
329
|
-
const newDb2 =
|
342
|
+
const newDb2 = DatabaseFactory("test-benchmark", { autoCompact: 100000, public: true });
|
330
343
|
const doc21 = await newDb2.get<FooType>("test");
|
331
344
|
expect(doc21.foo).toBe("fast");
|
332
|
-
const blocks2 = newDb2.
|
345
|
+
const blocks2 = newDb2.crdt.blockstore as bs.EncryptedBlockstore;
|
333
346
|
const loader2 = blocks2.loader;
|
334
347
|
expect(loader2).toBeTruthy();
|
335
348
|
|
@@ -392,13 +405,13 @@ describe("Reopening a database", function () {
|
|
392
405
|
// erase the existing test data
|
393
406
|
await sthis.start();
|
394
407
|
|
395
|
-
db =
|
408
|
+
db = DatabaseFactory("test-reopen", { autoCompact: 100000 });
|
396
409
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
397
410
|
expect(ok).toBeTruthy();
|
398
411
|
expect(ok.id).toBe("test");
|
399
412
|
|
400
|
-
expect(db.
|
401
|
-
expect(db.
|
413
|
+
expect(db.crdt.clock.head).toBeDefined();
|
414
|
+
expect(db.crdt.clock.head.length).toBe(1);
|
402
415
|
});
|
403
416
|
|
404
417
|
it("should persist data", async function () {
|
@@ -407,18 +420,18 @@ describe("Reopening a database", function () {
|
|
407
420
|
});
|
408
421
|
|
409
422
|
it("should have the same data on reopen", async function () {
|
410
|
-
const db2 =
|
423
|
+
const db2 = DatabaseFactory("test-reopen");
|
411
424
|
const doc = await db2.get<FooType>("test");
|
412
425
|
expect(doc.foo).toBe("bar");
|
413
|
-
expect(db2.
|
414
|
-
expect(db2.
|
415
|
-
expect(db2.
|
426
|
+
expect(db2.crdt.clock.head).toBeDefined();
|
427
|
+
expect(db2.crdt.clock.head.length).toBe(1);
|
428
|
+
expect(db2.crdt.clock.head).toEqual(db.crdt.clock.head);
|
416
429
|
await db2.close();
|
417
430
|
});
|
418
431
|
|
419
432
|
it("should have a car in the car log", async function () {
|
420
|
-
await db.
|
421
|
-
const blocks = db.
|
433
|
+
await db.crdt.ready();
|
434
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
422
435
|
const loader = blocks.loader;
|
423
436
|
expect(loader).toBeDefined();
|
424
437
|
expect(loader.carLog).toBeDefined();
|
@@ -426,9 +439,9 @@ describe("Reopening a database", function () {
|
|
426
439
|
});
|
427
440
|
|
428
441
|
it("should have carlog after reopen", async function () {
|
429
|
-
const db2 =
|
430
|
-
await db2.
|
431
|
-
const blocks = db2.
|
442
|
+
const db2 = DatabaseFactory("test-reopen");
|
443
|
+
await db2.crdt.ready();
|
444
|
+
const blocks = db2.crdt.blockstore as bs.EncryptedBlockstore;
|
432
445
|
const loader = blocks.loader;
|
433
446
|
expect(loader).toBeDefined();
|
434
447
|
expect(loader.carLog).toBeDefined();
|
@@ -439,10 +452,10 @@ describe("Reopening a database", function () {
|
|
439
452
|
it("faster, should have the same data on reopen after reopen and update", async function () {
|
440
453
|
for (let i = 0; i < 4; i++) {
|
441
454
|
// console.log('iteration', i)
|
442
|
-
const db =
|
455
|
+
const db = DatabaseFactory("test-reopen");
|
443
456
|
// assert(db._crdt.xready());
|
444
|
-
await db.
|
445
|
-
const blocks = db.
|
457
|
+
await db.crdt.ready();
|
458
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
446
459
|
const loader = blocks.loader;
|
447
460
|
expect(loader.carLog.length).toBe(i + 1);
|
448
461
|
const ok = await db.put({ _id: `test${i}`, fire: "proof".repeat(50 * 1024) });
|
@@ -458,11 +471,11 @@ describe("Reopening a database", function () {
|
|
458
471
|
for (let i = 0; i < 200; i++) {
|
459
472
|
// console.log("iteration", i);
|
460
473
|
// console.time("db open");
|
461
|
-
const db =
|
474
|
+
const db = DatabaseFactory("test-reopen", { autoCompact: 1000 }); // try with 10
|
462
475
|
// assert(db._crdt.ready);
|
463
|
-
await db.
|
476
|
+
await db.crdt.ready();
|
464
477
|
// console.timeEnd("db open");
|
465
|
-
const blocks = db.
|
478
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
466
479
|
const loader = blocks.loader;
|
467
480
|
expect(loader).toBeDefined();
|
468
481
|
expect(loader.carLog.length).toBe(i + 1);
|
@@ -505,13 +518,13 @@ describe("Reopening a database with indexes", function () {
|
|
505
518
|
didMap = true;
|
506
519
|
return doc.foo;
|
507
520
|
};
|
508
|
-
idx = index<string, Doc>(
|
521
|
+
idx = index<string, Doc>(db, "foo", mapFn);
|
509
522
|
});
|
510
523
|
|
511
524
|
it("should persist data", async function () {
|
512
525
|
const doc = await db.get<Doc>("test");
|
513
526
|
expect(doc.foo).toBe("bar");
|
514
|
-
const idx2 = index<string, Doc>(
|
527
|
+
const idx2 = index<string, Doc>(db, "foo");
|
515
528
|
expect(idx2).toBe(idx);
|
516
529
|
const result = await idx2.query();
|
517
530
|
expect(result).toBeTruthy();
|
@@ -522,7 +535,7 @@ describe("Reopening a database with indexes", function () {
|
|
522
535
|
});
|
523
536
|
|
524
537
|
it("should reuse the index", async function () {
|
525
|
-
const idx2 = index(
|
538
|
+
const idx2 = index(db, "foo", mapFn);
|
526
539
|
expect(idx2).toBe(idx);
|
527
540
|
const result = await idx2.query();
|
528
541
|
expect(result).toBeTruthy();
|
@@ -543,9 +556,9 @@ describe("Reopening a database with indexes", function () {
|
|
543
556
|
const db2 = fireproof("test-reopen-idx");
|
544
557
|
const doc = await db2.get<FooType>("test");
|
545
558
|
expect(doc.foo).toBe("bar");
|
546
|
-
expect(db2.
|
547
|
-
expect(db2.
|
548
|
-
expect(db2.
|
559
|
+
expect(db2.crdt.clock.head).toBeTruthy();
|
560
|
+
expect(db2.crdt.clock.head.length).toBe(1);
|
561
|
+
expect(db2.crdt.clock.head).toEqual(db.crdt.clock.head);
|
549
562
|
});
|
550
563
|
|
551
564
|
it("should have the same data on reopen after a query", async function () {
|
@@ -558,9 +571,9 @@ describe("Reopening a database with indexes", function () {
|
|
558
571
|
const db2 = fireproof("test-reopen-idx");
|
559
572
|
const doc = await db2.get<FooType>("test");
|
560
573
|
expect(doc.foo).toBe("bar");
|
561
|
-
expect(db2.
|
562
|
-
expect(db2.
|
563
|
-
expect(db2.
|
574
|
+
expect(db2.crdt.clock.head).toBeTruthy();
|
575
|
+
expect(db2.crdt.clock.head.length).toBe(1);
|
576
|
+
expect(db2.crdt.clock.head).toEqual(db.crdt.clock.head);
|
564
577
|
});
|
565
578
|
|
566
579
|
// it('should query the same data on reopen', async function () {
|
@@ -595,11 +608,11 @@ describe("basic js verify", function () {
|
|
595
608
|
expect(ok.id).toBe("test");
|
596
609
|
const ok2 = await db.put({ _id: "test2", foo: ["bar", "bam"] });
|
597
610
|
expect(ok2.id).toBe("test2");
|
598
|
-
const blocks = db.
|
611
|
+
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
599
612
|
const loader = blocks.loader;
|
600
613
|
expect(loader).toBeTruthy();
|
601
614
|
const cid = loader.carLog[0][0];
|
602
|
-
const cid2 = db.
|
615
|
+
const cid2 = db.crdt.clock.head[0];
|
603
616
|
expect(cid).not.toBe(cid2);
|
604
617
|
expect(cid).not.toBe(cid2);
|
605
618
|
const cidList = [cid, cid2];
|
@@ -621,21 +634,17 @@ describe("same workload twice, same CID", function () {
|
|
621
634
|
// let configA: any;
|
622
635
|
// let configB: any;
|
623
636
|
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
// base: storageURL(sthis).build().setParam("storekey", "@test@"),
|
636
|
-
// },
|
637
|
-
// },
|
638
|
-
// };
|
637
|
+
const configA: ConfigOpts = {
|
638
|
+
storeUrls: {
|
639
|
+
base: storageURL(sthis).build().setParam("storekey", "@test@"),
|
640
|
+
},
|
641
|
+
};
|
642
|
+
|
643
|
+
const configB: ConfigOpts = {
|
644
|
+
storeUrls: {
|
645
|
+
base: storageURL(sthis).build().setParam("storekey", "@test@"),
|
646
|
+
},
|
647
|
+
};
|
639
648
|
|
640
649
|
afterEach(async function () {
|
641
650
|
await dbA.close();
|
@@ -647,22 +656,22 @@ describe("same workload twice, same CID", function () {
|
|
647
656
|
let ok: DocResponse;
|
648
657
|
await sthis.start();
|
649
658
|
// todo this fails because the test setup doesn't properly configure both databases to use the same key
|
650
|
-
dbA = fireproof("test-dual-workload-a");
|
659
|
+
dbA = fireproof("test-dual-workload-a", configA);
|
651
660
|
for (const doc of docs) {
|
652
661
|
ok = await dbA.put(doc);
|
653
662
|
expect(ok).toBeTruthy();
|
654
663
|
expect(ok.id).toBeTruthy();
|
655
664
|
}
|
656
|
-
headA = dbA.
|
665
|
+
headA = dbA.crdt.clock.head.toString();
|
657
666
|
|
658
667
|
// todo this fails because the test setup doesn't properly configure both databases to use the same key
|
659
|
-
dbB = fireproof("test-dual-workload-b");
|
668
|
+
dbB = fireproof("test-dual-workload-b", configB);
|
660
669
|
for (const doc of docs) {
|
661
670
|
ok = await dbB.put(doc);
|
662
671
|
expect(ok).toBeTruthy();
|
663
672
|
expect(ok.id).toBeTruthy();
|
664
673
|
}
|
665
|
-
headB = dbB.
|
674
|
+
headB = dbB.crdt.clock.head.toString();
|
666
675
|
});
|
667
676
|
it("should have head A and B", async function () {
|
668
677
|
expect(headA).toBeTruthy();
|
@@ -671,15 +680,15 @@ describe("same workload twice, same CID", function () {
|
|
671
680
|
expect(headA.length).toBeGreaterThan(10);
|
672
681
|
});
|
673
682
|
it("should have same car log", async function () {
|
674
|
-
const logA = dbA.
|
683
|
+
const logA = dbA.crdt.blockstore.loader?.carLog;
|
675
684
|
expect(logA).toBeTruthy();
|
676
685
|
assert(logA);
|
677
|
-
expect(logA.length).toBe(
|
686
|
+
expect(logA.length).toBe(docs.length);
|
678
687
|
|
679
|
-
const logB = dbB.
|
688
|
+
const logB = dbB.crdt.blockstore.loader?.carLog;
|
680
689
|
expect(logB).toBeTruthy();
|
681
690
|
assert(logB);
|
682
|
-
expect(logB.length).toBe(
|
691
|
+
expect(logB.length).toBe(docs.length);
|
683
692
|
|
684
693
|
const logA2 = logA.map((c) => c.toString());
|
685
694
|
const logB2 = logB.map((c) => c.toString());
|
@@ -693,12 +702,12 @@ describe("same workload twice, same CID", function () {
|
|
693
702
|
await dbA.compact();
|
694
703
|
await dbB.compact();
|
695
704
|
|
696
|
-
const cmpLogA = dbA.
|
705
|
+
const cmpLogA = dbA.crdt.blockstore.loader?.carLog;
|
697
706
|
expect(cmpLogA).toBeTruthy();
|
698
707
|
assert(cmpLogA);
|
699
708
|
expect(cmpLogA.length).toBe(1);
|
700
709
|
|
701
|
-
const cmpLogB = dbB.
|
710
|
+
const cmpLogB = dbB.crdt.blockstore.loader?.carLog;
|
702
711
|
expect(cmpLogB).toBeTruthy();
|
703
712
|
assert(cmpLogB);
|
704
713
|
expect(cmpLogB.length).toBe(1);
|
@@ -1,31 +1,36 @@
|
|
1
|
-
import { fireproof
|
1
|
+
import { fireproof, Database, DocResponse, DocWithId, index, isDatabase } from "@fireproof/core";
|
2
|
+
import { mockSuperThis } from "../helpers";
|
2
3
|
|
3
4
|
describe("Hello World Test", function () {
|
4
5
|
it("should pass the hello world test", function () {
|
5
|
-
const result =
|
6
|
-
expect(result.name).toBe("hello");
|
6
|
+
const result = fireproof("hello"); // call to your library function
|
7
|
+
expect(result.name()).toBe("hello");
|
7
8
|
});
|
8
9
|
});
|
9
10
|
|
10
|
-
describe("hello public API",
|
11
|
+
describe("hello public API", () => {
|
11
12
|
interface TestDoc {
|
12
13
|
foo: string;
|
13
14
|
}
|
14
15
|
let db: Database;
|
15
16
|
let ok: DocResponse;
|
16
17
|
let doc: DocWithId<TestDoc>;
|
17
|
-
|
18
|
+
// let idx: Index<string, TestDoc>;
|
19
|
+
const sthis = mockSuperThis();
|
20
|
+
afterEach(async () => {
|
18
21
|
await db.close();
|
19
22
|
await db.destroy();
|
20
23
|
});
|
21
|
-
beforeEach(async
|
22
|
-
|
24
|
+
beforeEach(async () => {
|
25
|
+
await sthis.start();
|
26
|
+
db = fireproof("test-public-api");
|
27
|
+
index<string, TestDoc>(db, "test-index", (doc) => doc.foo);
|
23
28
|
ok = await db.put({ _id: "test", foo: "bar" });
|
24
29
|
doc = await db.get("test");
|
25
30
|
});
|
26
31
|
it("should have a database", function () {
|
27
32
|
expect(db).toBeTruthy();
|
28
|
-
expect(db
|
33
|
+
expect(isDatabase(db)).toBeTruthy();
|
29
34
|
});
|
30
35
|
it("should put", function () {
|
31
36
|
expect(ok).toBeTruthy();
|
@@ -34,11 +39,10 @@ describe("hello public API", function () {
|
|
34
39
|
it("should get", function () {
|
35
40
|
expect(doc.foo).toBe("bar");
|
36
41
|
});
|
37
|
-
it("should get when you open it again", async
|
42
|
+
it("should get when you open it again", async () => {
|
38
43
|
await db.close();
|
39
|
-
|
40
|
-
|
41
|
-
doc = await db2.get("test");
|
44
|
+
db = fireproof("test-public-api");
|
45
|
+
doc = await db.get("test");
|
42
46
|
expect(doc.foo).toBe("bar");
|
43
47
|
});
|
44
48
|
});
|
@@ -50,7 +54,7 @@ describe("Simplified Reopening a database", function () {
|
|
50
54
|
await db.destroy();
|
51
55
|
});
|
52
56
|
beforeEach(async function () {
|
53
|
-
db =
|
57
|
+
db = fireproof("test-reopen-simple");
|
54
58
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
55
59
|
expect(ok).toBeTruthy();
|
56
60
|
expect(ok.id).toBe("test");
|
@@ -62,7 +66,7 @@ describe("Simplified Reopening a database", function () {
|
|
62
66
|
});
|
63
67
|
|
64
68
|
it("should have the same data on reopen", async function () {
|
65
|
-
const db2 =
|
69
|
+
const db2 = fireproof("test-reopen-simple");
|
66
70
|
const doc = await db2.get<{ foo: string }>("test");
|
67
71
|
expect(doc.foo).toBe("bar");
|
68
72
|
await db2.close();
|