@xyo-network/archivist-acceptance-tests 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,6 +87,32 @@ var generateArchivistNextTests = (moduleFactory, title = "next") => {
87
87
  expect2(id?.salt).toBe(expected?.salt);
88
88
  });
89
89
  });
90
+ describe("with open undefined", () => {
91
+ const open = void 0;
92
+ it.each(["asc", "desc"])("returns payloads without cursor [order: %s]", async (order) => {
93
+ const bound = order === "asc" ? payloads.at(0) : payloads.at(-1);
94
+ expect2(bound).toBeDefined();
95
+ const expected = order === "asc" ? payloads.at(1) : payloads.at(-2);
96
+ expect2(expected).toBeDefined();
97
+ const cursor = bound?._sequence;
98
+ expect2(cursor).toBeDefined();
99
+ const response = await sut.next({
100
+ open,
101
+ order,
102
+ limit: 1,
103
+ cursor
104
+ });
105
+ expect2(response).toBeDefined();
106
+ expect2(response.length).toBe(1);
107
+ const ids = filterAs2(response, asOptionalId2);
108
+ expect2(ids).toBeDefined();
109
+ expect2(ids.length).toBe(1);
110
+ const id = ids.at(0);
111
+ expect2(id).toBeDefined();
112
+ expect2(id?.salt).toBeDefined();
113
+ expect2(id?.salt).toBe(expected?.salt);
114
+ });
115
+ });
90
116
  });
91
117
  });
92
118
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query/next/next.ts","../../src/lib/fillDb.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\nimport { asOptionalId } from '@xyo-network/id-payload-plugin'\nimport { type WithStorageMeta } from '@xyo-network/payload-model'\nimport {\n beforeEach, describe, expect, it,\n} from 'vitest'\n\nimport { fillDb } from '../../lib/index.ts'\n\nexport const generateArchivistNextTests = (\n moduleFactory: () => Promise<ArchivistInstance>,\n title: string = 'next',\n) => {\n describe(title, () => {\n let sut: ArchivistInstance\n let payloads: WithStorageMeta<IdPayload>[]\n beforeEach(async () => {\n sut = await moduleFactory()\n payloads = await fillDb(sut, 10)\n })\n describe('open', () => {\n describe('with open true', () => {\n const open = true\n it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {\n const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)\n expect(bound).toBeDefined()\n const expected = order === 'asc' ? payloads.at(1) : payloads.at(-2)\n expect(expected).toBeDefined()\n const cursor = bound?._sequence\n expect(cursor).toBeDefined()\n const response = await sut.next({\n open, order, limit: 1, cursor,\n })\n expect(response).toBeDefined()\n expect(response.length).toBe(1)\n const ids = filterAs(response, asOptionalId)\n expect(ids).toBeDefined()\n expect(ids.length).toBe(1)\n const id = ids.at(0)\n expect(id).toBeDefined()\n expect(id?.salt).toBeDefined()\n expect(id?.salt).toBe(expected?.salt)\n })\n })\n describe('with open false', () => {\n const open = false\n it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {\n const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)\n expect(bound).toBeDefined()\n const expected = bound\n expect(expected).toBeDefined()\n const cursor = bound?._sequence\n expect(cursor).toBeDefined()\n const response = await sut.next({\n open, order, limit: 1, cursor,\n })\n expect(response).toBeDefined()\n expect(response.length).toBe(1)\n const ids = filterAs(response, asOptionalId)\n expect(ids).toBeDefined()\n expect(ids.length).toBe(1)\n const id = ids.at(0)\n expect(id).toBeDefined()\n expect(id?.salt).toBeDefined()\n expect(id?.salt).toBe(expected?.salt)\n })\n })\n })\n })\n}\n","import { filterAs } from '@xylabs/array'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Id, IdPayload } from '@xyo-network/id-payload-plugin'\nimport { asOptionalId, IdSchema } from '@xyo-network/id-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { type WithStorageMeta } from '@xyo-network/payload-model'\nimport { v4 as uuid } from 'uuid'\nimport { expect } from 'vitest'\n\nexport const fillDb = async (sut: ArchivistInstance, count = 10): Promise<WithStorageMeta<IdPayload>[]> => {\n const payloads = Array.from(\n { length: count },\n () => new PayloadBuilder<Id>({ schema: IdSchema })\n .fields({ salt: `${uuid()}` })\n .build(),\n )\n const response = await sut.insert(payloads)\n expect(response).toBeDefined()\n expect(response.length).toBe(count)\n return filterAs(response, asOptionalId) as WithStorageMeta<IdPayload>[]\n}\n"],"mappings":";AAAA,SAAS,YAAAA,iBAAgB;AAGzB,SAAS,gBAAAC,qBAAoB;AAE7B;AAAA,EACE;AAAA,EAAY;AAAA,EAAU,UAAAC;AAAA,EAAQ;AAAA,OACzB;;;ACPP,SAAS,gBAAgB;AAGzB,SAAS,cAAc,gBAAgB;AACvC,SAAS,sBAAsB;AAE/B,SAAS,MAAM,YAAY;AAC3B,SAAS,cAAc;AAEhB,IAAM,SAAS,OAAO,KAAwB,QAAQ,OAA8C;AACzG,QAAM,WAAW,MAAM;AAAA,IACrB,EAAE,QAAQ,MAAM;AAAA,IAChB,MAAM,IAAI,eAAmB,EAAE,QAAQ,SAAS,CAAC,EAC9C,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAC5B,MAAM;AAAA,EACX;AACA,QAAM,WAAW,MAAM,IAAI,OAAO,QAAQ;AAC1C,SAAO,QAAQ,EAAE,YAAY;AAC7B,SAAO,SAAS,MAAM,EAAE,KAAK,KAAK;AAClC,SAAO,SAAS,UAAU,YAAY;AACxC;;;ADTO,IAAM,6BAA6B,CACxC,eACA,QAAgB,WACb;AACH,WAAS,OAAO,MAAM;AACpB,QAAI;AACJ,QAAI;AACJ,eAAW,YAAY;AACrB,YAAM,MAAM,cAAc;AAC1B,iBAAW,MAAM,OAAO,KAAK,EAAE;AAAA,IACjC,CAAC;AACD,aAAS,QAAQ,MAAM;AACrB,eAAS,kBAAkB,MAAM;AAC/B,cAAM,OAAO;AACb,WAAG,KAAK,CAAC,OAAO,MAAM,CAAU,EAAE,+CAA+C,OAAO,UAAU;AAChG,gBAAM,QAAQ,UAAU,QAAQ,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE;AAC/D,UAAAC,QAAO,KAAK,EAAE,YAAY;AAC1B,gBAAM,WAAW,UAAU,QAAQ,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE;AAClE,UAAAA,QAAO,QAAQ,EAAE,YAAY;AAC7B,gBAAM,SAAS,OAAO;AACtB,UAAAA,QAAO,MAAM,EAAE,YAAY;AAC3B,gBAAM,WAAW,MAAM,IAAI,KAAK;AAAA,YAC9B;AAAA,YAAM;AAAA,YAAO,OAAO;AAAA,YAAG;AAAA,UACzB,CAAC;AACD,UAAAA,QAAO,QAAQ,EAAE,YAAY;AAC7B,UAAAA,QAAO,SAAS,MAAM,EAAE,KAAK,CAAC;AAC9B,gBAAM,MAAMC,UAAS,UAAUC,aAAY;AAC3C,UAAAF,QAAO,GAAG,EAAE,YAAY;AACxB,UAAAA,QAAO,IAAI,MAAM,EAAE,KAAK,CAAC;AACzB,gBAAM,KAAK,IAAI,GAAG,CAAC;AACnB,UAAAA,QAAO,EAAE,EAAE,YAAY;AACvB,UAAAA,QAAO,IAAI,IAAI,EAAE,YAAY;AAC7B,UAAAA,QAAO,IAAI,IAAI,EAAE,KAAK,UAAU,IAAI;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AACD,eAAS,mBAAmB,MAAM;AAChC,cAAM,OAAO;AACb,WAAG,KAAK,CAAC,OAAO,MAAM,CAAU,EAAE,+CAA+C,OAAO,UAAU;AAChG,gBAAM,QAAQ,UAAU,QAAQ,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE;AAC/D,UAAAA,QAAO,KAAK,EAAE,YAAY;AAC1B,gBAAM,WAAW;AACjB,UAAAA,QAAO,QAAQ,EAAE,YAAY;AAC7B,gBAAM,SAAS,OAAO;AACtB,UAAAA,QAAO,MAAM,EAAE,YAAY;AAC3B,gBAAM,WAAW,MAAM,IAAI,KAAK;AAAA,YAC9B;AAAA,YAAM;AAAA,YAAO,OAAO;AAAA,YAAG;AAAA,UACzB,CAAC;AACD,UAAAA,QAAO,QAAQ,EAAE,YAAY;AAC7B,UAAAA,QAAO,SAAS,MAAM,EAAE,KAAK,CAAC;AAC9B,gBAAM,MAAMC,UAAS,UAAUC,aAAY;AAC3C,UAAAF,QAAO,GAAG,EAAE,YAAY;AACxB,UAAAA,QAAO,IAAI,MAAM,EAAE,KAAK,CAAC;AACzB,gBAAM,KAAK,IAAI,GAAG,CAAC;AACnB,UAAAA,QAAO,EAAE,EAAE,YAAY;AACvB,UAAAA,QAAO,IAAI,IAAI,EAAE,YAAY;AAC7B,UAAAA,QAAO,IAAI,IAAI,EAAE,KAAK,UAAU,IAAI;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;","names":["filterAs","asOptionalId","expect","expect","filterAs","asOptionalId"]}
1
+ {"version":3,"sources":["../../src/query/next/next.ts","../../src/lib/fillDb.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\nimport { asOptionalId } from '@xyo-network/id-payload-plugin'\nimport { type WithStorageMeta } from '@xyo-network/payload-model'\nimport {\n beforeEach, describe, expect, it,\n} from 'vitest'\n\nimport { fillDb } from '../../lib/index.ts'\n\nexport const generateArchivistNextTests = (\n moduleFactory: () => Promise<ArchivistInstance>,\n title: string = 'next',\n) => {\n describe(title, () => {\n let sut: ArchivistInstance\n let payloads: WithStorageMeta<IdPayload>[]\n beforeEach(async () => {\n sut = await moduleFactory()\n payloads = await fillDb(sut, 10)\n })\n describe('open', () => {\n describe('with open true', () => {\n const open = true\n it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {\n const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)\n expect(bound).toBeDefined()\n const expected = order === 'asc' ? payloads.at(1) : payloads.at(-2)\n expect(expected).toBeDefined()\n const cursor = bound?._sequence\n expect(cursor).toBeDefined()\n const response = await sut.next({\n open, order, limit: 1, cursor,\n })\n expect(response).toBeDefined()\n expect(response.length).toBe(1)\n const ids = filterAs(response, asOptionalId)\n expect(ids).toBeDefined()\n expect(ids.length).toBe(1)\n const id = ids.at(0)\n expect(id).toBeDefined()\n expect(id?.salt).toBeDefined()\n expect(id?.salt).toBe(expected?.salt)\n })\n })\n describe('with open false', () => {\n const open = false\n it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {\n const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)\n expect(bound).toBeDefined()\n const expected = bound\n expect(expected).toBeDefined()\n const cursor = bound?._sequence\n expect(cursor).toBeDefined()\n const response = await sut.next({\n open, order, limit: 1, cursor,\n })\n expect(response).toBeDefined()\n expect(response.length).toBe(1)\n const ids = filterAs(response, asOptionalId)\n expect(ids).toBeDefined()\n expect(ids.length).toBe(1)\n const id = ids.at(0)\n expect(id).toBeDefined()\n expect(id?.salt).toBeDefined()\n expect(id?.salt).toBe(expected?.salt)\n })\n })\n describe('with open undefined', () => {\n const open = undefined\n it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {\n const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)\n expect(bound).toBeDefined()\n const expected = order === 'asc' ? payloads.at(1) : payloads.at(-2)\n expect(expected).toBeDefined()\n const cursor = bound?._sequence\n expect(cursor).toBeDefined()\n const response = await sut.next({\n open, order, limit: 1, cursor,\n })\n expect(response).toBeDefined()\n expect(response.length).toBe(1)\n const ids = filterAs(response, asOptionalId)\n expect(ids).toBeDefined()\n expect(ids.length).toBe(1)\n const id = ids.at(0)\n expect(id).toBeDefined()\n expect(id?.salt).toBeDefined()\n expect(id?.salt).toBe(expected?.salt)\n })\n })\n })\n })\n}\n","import { filterAs } from '@xylabs/array'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Id, IdPayload } from '@xyo-network/id-payload-plugin'\nimport { asOptionalId, IdSchema } from '@xyo-network/id-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { type WithStorageMeta } from '@xyo-network/payload-model'\nimport { v4 as uuid } from 'uuid'\nimport { expect } from 'vitest'\n\nexport const fillDb = async (sut: ArchivistInstance, count = 10): Promise<WithStorageMeta<IdPayload>[]> => {\n const payloads = Array.from(\n { length: count },\n () => new PayloadBuilder<Id>({ schema: IdSchema })\n .fields({ salt: `${uuid()}` })\n .build(),\n )\n const response = await sut.insert(payloads)\n expect(response).toBeDefined()\n expect(response.length).toBe(count)\n return filterAs(response, asOptionalId) as WithStorageMeta<IdPayload>[]\n}\n"],"mappings":"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","names":["filterAs","asOptionalId","expect","expect","filterAs","asOptionalId"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/archivist-acceptance-tests",
3
- "version": "3.8.4",
3
+ "version": "3.9.0",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -36,21 +36,22 @@
36
36
  "@xylabs/object": "^4.5.1",
37
37
  "@xylabs/promise": "^4.5.1",
38
38
  "@xylabs/set": "^4.5.1",
39
- "@xyo-network/account-model": "^3.8.4",
40
- "@xyo-network/archivist-model": "^3.8.4",
41
- "@xyo-network/boundwitness-model": "^3.8.4",
42
- "@xyo-network/boundwitness-wrapper": "^3.8.4",
43
- "@xyo-network/id-payload-plugin": "^3.8.4",
44
- "@xyo-network/module-abstract": "^3.8.4",
45
- "@xyo-network/module-model": "^3.8.4",
46
- "@xyo-network/payload-builder": "^3.8.4",
47
- "@xyo-network/payload-model": "^3.8.4",
39
+ "@xyo-network/account-model": "^3.9.0",
40
+ "@xyo-network/archivist-model": "^3.9.0",
41
+ "@xyo-network/boundwitness-model": "^3.9.0",
42
+ "@xyo-network/boundwitness-wrapper": "^3.9.0",
43
+ "@xyo-network/id-payload-plugin": "^3.9.0",
44
+ "@xyo-network/module-abstract": "^3.9.0",
45
+ "@xyo-network/module-model": "^3.9.0",
46
+ "@xyo-network/payload-builder": "^3.9.0",
47
+ "@xyo-network/payload-model": "^3.9.0",
48
48
  "uuid": "^11.0.5"
49
49
  },
50
50
  "devDependencies": {
51
- "@xylabs/ts-scripts-yarn3": "^5.0.22",
52
- "@xylabs/tsconfig": "^5.0.22",
53
- "typescript": "^5.7.3"
51
+ "@xylabs/ts-scripts-yarn3": "^5.0.23",
52
+ "@xylabs/tsconfig": "^5.0.23",
53
+ "typescript": "^5.7.3",
54
+ "vitest": "^3.0.5"
54
55
  },
55
56
  "publishConfig": {
56
57
  "access": "public"
@@ -67,6 +67,29 @@ export const generateArchivistNextTests = (
67
67
  expect(id?.salt).toBe(expected?.salt)
68
68
  })
69
69
  })
70
+ describe('with open undefined', () => {
71
+ const open = undefined
72
+ it.each(['asc', 'desc'] as const)('returns payloads without cursor [order: %s]', async (order) => {
73
+ const bound = order === 'asc' ? payloads.at(0) : payloads.at(-1)
74
+ expect(bound).toBeDefined()
75
+ const expected = order === 'asc' ? payloads.at(1) : payloads.at(-2)
76
+ expect(expected).toBeDefined()
77
+ const cursor = bound?._sequence
78
+ expect(cursor).toBeDefined()
79
+ const response = await sut.next({
80
+ open, order, limit: 1, cursor,
81
+ })
82
+ expect(response).toBeDefined()
83
+ expect(response.length).toBe(1)
84
+ const ids = filterAs(response, asOptionalId)
85
+ expect(ids).toBeDefined()
86
+ expect(ids.length).toBe(1)
87
+ const id = ids.at(0)
88
+ expect(id).toBeDefined()
89
+ expect(id?.salt).toBeDefined()
90
+ expect(id?.salt).toBe(expected?.salt)
91
+ })
92
+ })
70
93
  })
71
94
  })
72
95
  }