@xyo-network/diviner-payload-memory 5.1.21 → 5.1.23
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.
- package/package.json +14 -11
- package/dist/neutral/spec/Diviner.spec.d.ts +0 -2
- package/dist/neutral/spec/Diviner.spec.d.ts.map +0 -1
- package/dist/neutral/spec/MemoryPayloadDiviner.spec.d.ts +0 -2
- package/dist/neutral/spec/MemoryPayloadDiviner.spec.d.ts.map +0 -1
- package/src/spec/Diviner.spec.ts +0 -155
- package/src/spec/MemoryPayloadDiviner.spec.ts +0 -183
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/diviner-payload-memory",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.23",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -30,23 +30,26 @@
|
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"files": [
|
|
32
32
|
"dist",
|
|
33
|
-
"src"
|
|
33
|
+
"src",
|
|
34
|
+
"!**/*.bench.*",
|
|
35
|
+
"!**/*.spec.*",
|
|
36
|
+
"!**/*.test.*"
|
|
34
37
|
],
|
|
35
38
|
"dependencies": {
|
|
36
|
-
"@xyo-network/diviner-payload-generic": "~5.1.
|
|
39
|
+
"@xyo-network/diviner-payload-generic": "~5.1.23"
|
|
37
40
|
},
|
|
38
41
|
"devDependencies": {
|
|
39
|
-
"@xylabs/delay": "~5.0.
|
|
42
|
+
"@xylabs/delay": "~5.0.33",
|
|
40
43
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
41
44
|
"@xylabs/tsconfig": "~7.2.8",
|
|
42
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
43
|
-
"@xyo-network/archivist-memory": "~5.1.
|
|
44
|
-
"@xyo-network/diviner-payload-model": "~5.1.
|
|
45
|
-
"@xyo-network/node-memory": "~5.1.
|
|
46
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
47
|
-
"@xyo-network/payload-model": "~5.1.
|
|
45
|
+
"@xylabs/vitest-extended": "~5.0.33",
|
|
46
|
+
"@xyo-network/archivist-memory": "~5.1.23",
|
|
47
|
+
"@xyo-network/diviner-payload-model": "~5.1.23",
|
|
48
|
+
"@xyo-network/node-memory": "~5.1.23",
|
|
49
|
+
"@xyo-network/payload-builder": "~5.1.23",
|
|
50
|
+
"@xyo-network/payload-model": "~5.1.23",
|
|
48
51
|
"typescript": "~5.9.3",
|
|
49
|
-
"vitest": "~4.0.
|
|
52
|
+
"vitest": "~4.0.9"
|
|
50
53
|
},
|
|
51
54
|
"publishConfig": {
|
|
52
55
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Diviner.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryPayloadDiviner.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/MemoryPayloadDiviner.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
package/src/spec/Diviner.spec.ts
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-nested-callbacks */
|
|
2
|
-
|
|
3
|
-
import '@xylabs/vitest-extended'
|
|
4
|
-
|
|
5
|
-
import { delay } from '@xylabs/delay'
|
|
6
|
-
import { MemoryArchivist } from '@xyo-network/archivist-memory'
|
|
7
|
-
import { GenericPayloadDivinerConfigSchema } from '@xyo-network/diviner-payload-generic'
|
|
8
|
-
import type { PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'
|
|
9
|
-
import { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'
|
|
10
|
-
import { MemoryNode } from '@xyo-network/node-memory'
|
|
11
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
12
|
-
import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
|
|
13
|
-
import {
|
|
14
|
-
beforeAll, describe, expect, it,
|
|
15
|
-
} from 'vitest'
|
|
16
|
-
|
|
17
|
-
import { MemoryPayloadDiviner } from '../MemoryPayloadDiviner.ts'
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @group module
|
|
21
|
-
* @group diviner
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
describe('GenericPayloadDiviner', () => {
|
|
25
|
-
let archivist: MemoryArchivist
|
|
26
|
-
let sut: MemoryPayloadDiviner
|
|
27
|
-
let node: MemoryNode
|
|
28
|
-
const payloadA: Payload<{ schema: string; url: string }> = {
|
|
29
|
-
schema: 'network.xyo.test',
|
|
30
|
-
url: 'https://xyo.network',
|
|
31
|
-
}
|
|
32
|
-
const payloadB: Payload<{ foo: string[]; schema: string }> = {
|
|
33
|
-
foo: ['bar', 'baz'],
|
|
34
|
-
schema: 'network.xyo.debug',
|
|
35
|
-
}
|
|
36
|
-
const payloadC: Payload<{ foo: string[]; schema: string }> = {
|
|
37
|
-
foo: ['one', 'two'],
|
|
38
|
-
schema: 'network.xyo.debug',
|
|
39
|
-
}
|
|
40
|
-
const payloadD: Payload<{ foo: string[]; schema: string }> = {
|
|
41
|
-
foo: ['aaa', 'bbb'],
|
|
42
|
-
schema: 'network.xyo.debug',
|
|
43
|
-
}
|
|
44
|
-
const insertedPayloads: WithStorageMeta<Payload>[] = []
|
|
45
|
-
beforeAll(async () => {
|
|
46
|
-
archivist = await MemoryArchivist.create({
|
|
47
|
-
account: 'random',
|
|
48
|
-
config: { name: 'test', schema: MemoryArchivist.defaultConfigSchema },
|
|
49
|
-
})
|
|
50
|
-
for (const payload of [payloadA, payloadB, payloadC, payloadD]) {
|
|
51
|
-
await delay(2)
|
|
52
|
-
const [insertedPayload] = await archivist.insert([payload])
|
|
53
|
-
insertedPayloads.push(insertedPayload)
|
|
54
|
-
}
|
|
55
|
-
sut = await MemoryPayloadDiviner.create({
|
|
56
|
-
account: 'random',
|
|
57
|
-
config: {
|
|
58
|
-
archivist: archivist.address,
|
|
59
|
-
schema: GenericPayloadDivinerConfigSchema,
|
|
60
|
-
},
|
|
61
|
-
})
|
|
62
|
-
node = await MemoryNode.create({
|
|
63
|
-
account: 'random',
|
|
64
|
-
config: { schema: MemoryNode.defaultConfigSchema },
|
|
65
|
-
})
|
|
66
|
-
const modules = [archivist, sut]
|
|
67
|
-
await node.start()
|
|
68
|
-
await Promise.all(
|
|
69
|
-
modules.map(async (mod) => {
|
|
70
|
-
await node.register(mod)
|
|
71
|
-
await node.attach(mod.address, true)
|
|
72
|
-
}),
|
|
73
|
-
)
|
|
74
|
-
await sut.start()
|
|
75
|
-
})
|
|
76
|
-
describe('with filter for', () => {
|
|
77
|
-
describe('schema', () => {
|
|
78
|
-
describe('single', () => {
|
|
79
|
-
it.each(['network.xyo.test', 'network.xyo.debug'])('only returns payloads of that schema', async (schema) => {
|
|
80
|
-
const schemas = [schema]
|
|
81
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema }).fields({ schemas }).build()
|
|
82
|
-
const results = await sut.divine([query])
|
|
83
|
-
expect(results.length).toBeGreaterThan(0)
|
|
84
|
-
expect(results.every(result => result.schema === schema)).toBe(true)
|
|
85
|
-
})
|
|
86
|
-
it('only return single payload of that schema', async () => {
|
|
87
|
-
const schemas = ['network.xyo.debug']
|
|
88
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
89
|
-
.fields({ limit: 1, schemas })
|
|
90
|
-
.build()
|
|
91
|
-
const results = await sut.divine([query])
|
|
92
|
-
expect(results.length).toBe(1)
|
|
93
|
-
expect(await PayloadBuilder.dataHash(results[0])).toBe(await PayloadBuilder.dataHash(insertedPayloads[3]))
|
|
94
|
-
expect(results.every(result => result.schema === 'network.xyo.debug')).toBe(true)
|
|
95
|
-
})
|
|
96
|
-
it('only return single payload of that schema (desc)', async () => {
|
|
97
|
-
const schemas = ['network.xyo.debug']
|
|
98
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
99
|
-
.fields({
|
|
100
|
-
limit: 1, order: 'desc', schemas,
|
|
101
|
-
})
|
|
102
|
-
.build()
|
|
103
|
-
const results = await sut.divine([query])
|
|
104
|
-
expect(results.length).toBe(1)
|
|
105
|
-
expect(PayloadBuilder.omitStorageMeta(results[0])).toEqual(PayloadBuilder.omitStorageMeta(insertedPayloads[3]))
|
|
106
|
-
expect(await PayloadBuilder.dataHash(results[0])).toBe(await PayloadBuilder.dataHash(insertedPayloads[3]))
|
|
107
|
-
expect(results.every(result => result.schema === 'network.xyo.debug')).toBe(true)
|
|
108
|
-
})
|
|
109
|
-
it('only return single payload of that schema (asc)', async () => {
|
|
110
|
-
const schemas = ['network.xyo.debug']
|
|
111
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
112
|
-
.fields({
|
|
113
|
-
limit: 1, order: 'asc', schemas,
|
|
114
|
-
})
|
|
115
|
-
.build()
|
|
116
|
-
const results = await sut.divine([query])
|
|
117
|
-
expect(results.length).toBe(1)
|
|
118
|
-
expect(await PayloadBuilder.dataHash(results[0])).toBe(await PayloadBuilder.dataHash(payloadB))
|
|
119
|
-
expect(results.every(result => result.schema === 'network.xyo.debug')).toBe(true)
|
|
120
|
-
})
|
|
121
|
-
})
|
|
122
|
-
describe('multiple', () => {
|
|
123
|
-
it('only returns payloads of that schema', async () => {
|
|
124
|
-
const schemas = ['network.xyo.test', 'network.xyo.debug']
|
|
125
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema }).fields({ schemas }).build()
|
|
126
|
-
const results = await sut.divine([query])
|
|
127
|
-
expect(results.length).toBeGreaterThan(0)
|
|
128
|
-
expect(results.every(result => schemas.includes(result.schema))).toBe(true)
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
})
|
|
132
|
-
describe('custom field', () => {
|
|
133
|
-
describe('property', () => {
|
|
134
|
-
it('only returns payloads with that property', async () => {
|
|
135
|
-
type WithUrl = { url?: string }
|
|
136
|
-
const url = payloadA.url
|
|
137
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload & WithUrl>({ schema: PayloadDivinerQuerySchema }).fields({ url }).build()
|
|
138
|
-
const results = await sut.divine([query])
|
|
139
|
-
expect(results.length).toBeGreaterThan(0)
|
|
140
|
-
expect(results.every(result => (result as WithUrl)?.url === url)).toBe(true)
|
|
141
|
-
})
|
|
142
|
-
})
|
|
143
|
-
describe('array', () => {
|
|
144
|
-
const cases: string[][] = [['bar'], ['baz'], ['bar', 'baz']]
|
|
145
|
-
it.each(cases)('only returns payloads that have an array containing all the values supplied', async (...foo) => {
|
|
146
|
-
type WithFoo = { foo?: string[] }
|
|
147
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload & WithFoo>({ schema: PayloadDivinerQuerySchema }).fields({ foo }).build()
|
|
148
|
-
const results = await sut.divine([query])
|
|
149
|
-
expect(results.length).toBeGreaterThan(0)
|
|
150
|
-
expect(results.every(result => foo.every(v => (result as unknown as WithFoo)?.foo?.includes(v)))).toBe(true)
|
|
151
|
-
})
|
|
152
|
-
})
|
|
153
|
-
})
|
|
154
|
-
})
|
|
155
|
-
})
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-nested-callbacks */
|
|
2
|
-
|
|
3
|
-
import '@xylabs/vitest-extended'
|
|
4
|
-
|
|
5
|
-
import { delay } from '@xylabs/delay'
|
|
6
|
-
import { MemoryArchivist } from '@xyo-network/archivist-memory'
|
|
7
|
-
import { GenericPayloadDivinerConfigSchema } from '@xyo-network/diviner-payload-generic'
|
|
8
|
-
import type { PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'
|
|
9
|
-
import { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'
|
|
10
|
-
import { MemoryNode } from '@xyo-network/node-memory'
|
|
11
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
12
|
-
import type {
|
|
13
|
-
Payload,
|
|
14
|
-
WithStorageMeta,
|
|
15
|
-
} from '@xyo-network/payload-model'
|
|
16
|
-
import {
|
|
17
|
-
isSequenceStorageMeta,
|
|
18
|
-
SequenceConstants,
|
|
19
|
-
} from '@xyo-network/payload-model'
|
|
20
|
-
import {
|
|
21
|
-
beforeAll,
|
|
22
|
-
describe, expect, it,
|
|
23
|
-
} from 'vitest'
|
|
24
|
-
|
|
25
|
-
import { MemoryPayloadDiviner } from '../MemoryPayloadDiviner.ts'
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @group module
|
|
29
|
-
* @group diviner
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
describe('MemoryPayloadDiviner', () => {
|
|
33
|
-
let archivist: MemoryArchivist
|
|
34
|
-
let sut: MemoryPayloadDiviner
|
|
35
|
-
let node: MemoryNode
|
|
36
|
-
let payloadA: Payload<{ schema: string; url: string }>
|
|
37
|
-
let payloadB: Payload<{ foo: string[]; schema: string }>
|
|
38
|
-
let insertedPayloads: WithStorageMeta<Payload>[]
|
|
39
|
-
beforeAll(async () => {
|
|
40
|
-
payloadA = {
|
|
41
|
-
schema: 'network.xyo.test',
|
|
42
|
-
url: 'https://xyo.network',
|
|
43
|
-
}
|
|
44
|
-
await delay(2)
|
|
45
|
-
payloadB = {
|
|
46
|
-
foo: ['bar', 'baz'],
|
|
47
|
-
schema: 'network.xyo.debug',
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
archivist = await MemoryArchivist.create({
|
|
51
|
-
account: 'random',
|
|
52
|
-
config: { name: 'test', schema: MemoryArchivist.defaultConfigSchema },
|
|
53
|
-
})
|
|
54
|
-
insertedPayloads = await archivist.insert([payloadA, payloadB])
|
|
55
|
-
sut = await MemoryPayloadDiviner.create({
|
|
56
|
-
account: 'random',
|
|
57
|
-
config: {
|
|
58
|
-
archivist: archivist.address,
|
|
59
|
-
schema: GenericPayloadDivinerConfigSchema,
|
|
60
|
-
},
|
|
61
|
-
})
|
|
62
|
-
node = await MemoryNode.create({
|
|
63
|
-
account: 'random',
|
|
64
|
-
config: { schema: MemoryNode.defaultConfigSchema },
|
|
65
|
-
})
|
|
66
|
-
const modules = [archivist, sut]
|
|
67
|
-
await node.start()
|
|
68
|
-
await Promise.all(
|
|
69
|
-
modules.map(async (mod) => {
|
|
70
|
-
await node.register(mod)
|
|
71
|
-
await node.attach(mod.address, true)
|
|
72
|
-
}),
|
|
73
|
-
)
|
|
74
|
-
})
|
|
75
|
-
describe('with filter for', () => {
|
|
76
|
-
describe('schema', () => {
|
|
77
|
-
describe('single', () => {
|
|
78
|
-
it.each(['network.xyo.test', 'network.xyo.debug'])('only returns payloads of that schema', async (schema) => {
|
|
79
|
-
const schemas = [schema]
|
|
80
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema }).fields({ schemas }).build()
|
|
81
|
-
const results = await sut.divine([query])
|
|
82
|
-
expect(results.length).toBeGreaterThan(0)
|
|
83
|
-
expect(results.every(result => result.schema === schema)).toBe(true)
|
|
84
|
-
})
|
|
85
|
-
})
|
|
86
|
-
describe('multiple', () => {
|
|
87
|
-
it('only returns payloads of that schema', async () => {
|
|
88
|
-
const schemas = ['network.xyo.test', 'network.xyo.debug']
|
|
89
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema }).fields({ schemas }).build()
|
|
90
|
-
const results = await sut.divine([query])
|
|
91
|
-
expect(results.length).toBeGreaterThan(0)
|
|
92
|
-
expect(results.every(result => schemas.includes(result.schema))).toBe(true)
|
|
93
|
-
})
|
|
94
|
-
})
|
|
95
|
-
})
|
|
96
|
-
describe('sequence', () => {
|
|
97
|
-
describe('when order supplied', () => {
|
|
98
|
-
describe('asc', () => {
|
|
99
|
-
const order = 'asc'
|
|
100
|
-
it('returns payloads greater than the supplied sequence', async () => {
|
|
101
|
-
const cursor = SequenceConstants.minLocalSequence
|
|
102
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
103
|
-
.fields({ order, cursor })
|
|
104
|
-
.build()
|
|
105
|
-
const results = await sut.divine([query])
|
|
106
|
-
expect(results.length).toBeGreaterThan(0)
|
|
107
|
-
expect(results.every(isSequenceStorageMeta)).toBeTruthy()
|
|
108
|
-
expect((results.filter(isSequenceStorageMeta)).every(result => result._sequence > cursor)).toBe(true)
|
|
109
|
-
})
|
|
110
|
-
it.skip('returns payloads equal to the supplied sequence (not a thing with _sequence)', async () => {
|
|
111
|
-
// eslint-disable-next-line sonarjs/no-alphabetical-sort
|
|
112
|
-
const cursor = insertedPayloads.toSorted()[1]._sequence
|
|
113
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
114
|
-
.fields({ order, cursor })
|
|
115
|
-
.build()
|
|
116
|
-
const results = await sut.divine([query])
|
|
117
|
-
expect(results.length).toBeGreaterThan(0)
|
|
118
|
-
expect(results.every(isSequenceStorageMeta)).toBeTruthy()
|
|
119
|
-
expect((results.filter(isSequenceStorageMeta)).every(result => result._sequence !== cursor)).toBe(true)
|
|
120
|
-
})
|
|
121
|
-
})
|
|
122
|
-
describe('desc', () => {
|
|
123
|
-
const order = 'desc'
|
|
124
|
-
it('returns payloads less than the supplied sequence', async () => {
|
|
125
|
-
const cursor = SequenceConstants.maxLocalSequence
|
|
126
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
127
|
-
.fields({ order, cursor })
|
|
128
|
-
.build()
|
|
129
|
-
const results = await sut.divine([query])
|
|
130
|
-
expect(results.length).toBeGreaterThan(0)
|
|
131
|
-
expect(results.every(isSequenceStorageMeta)).toBeTruthy()
|
|
132
|
-
expect((results.filter(isSequenceStorageMeta)).every(result => result._sequence < cursor)).toBe(true)
|
|
133
|
-
})
|
|
134
|
-
it.skip('returns payloads equal to the supplied sequence (not a thing with _sequence)', async () => {
|
|
135
|
-
// eslint-disable-next-line sonarjs/no-alphabetical-sort
|
|
136
|
-
const cursor = insertedPayloads.toSorted()[0]._sequence
|
|
137
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema })
|
|
138
|
-
.fields({ order, cursor })
|
|
139
|
-
.build()
|
|
140
|
-
const results = await sut.divine([query])
|
|
141
|
-
expect(results.length).toBeGreaterThan(0)
|
|
142
|
-
expect(results.every(isSequenceStorageMeta)).toBe(true)
|
|
143
|
-
expect((results.filter(isSequenceStorageMeta)).every(result => result._sequence !== cursor)).toBe(true)
|
|
144
|
-
})
|
|
145
|
-
})
|
|
146
|
-
})
|
|
147
|
-
describe('when order not supplied', () => {
|
|
148
|
-
it.skip('returns payloads equal to the supplied sequence (not a thing with _sequence)', async () => {
|
|
149
|
-
for (const payload of insertedPayloads) {
|
|
150
|
-
const cursor = payload._sequence
|
|
151
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload>({ schema: PayloadDivinerQuerySchema }).fields({ cursor }).build()
|
|
152
|
-
const results = await sut.divine([query])
|
|
153
|
-
expect(results.length).toBeGreaterThan(0)
|
|
154
|
-
expect(results.every(isSequenceStorageMeta)).toBe(true)
|
|
155
|
-
expect((results.filter(isSequenceStorageMeta)).every(result => result._sequence !== cursor)).toBe(true)
|
|
156
|
-
}
|
|
157
|
-
})
|
|
158
|
-
})
|
|
159
|
-
})
|
|
160
|
-
describe('custom field', () => {
|
|
161
|
-
describe('property', () => {
|
|
162
|
-
it('only returns payloads with that property', async () => {
|
|
163
|
-
type WithUrl = { url?: string }
|
|
164
|
-
const url = payloadA.url
|
|
165
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload & WithUrl>({ schema: PayloadDivinerQuerySchema }).fields({ url }).build()
|
|
166
|
-
const results = await sut.divine([query])
|
|
167
|
-
expect(results.length).toBeGreaterThan(0)
|
|
168
|
-
expect(results.every(result => (result as WithUrl)?.url === url)).toBe(true)
|
|
169
|
-
})
|
|
170
|
-
})
|
|
171
|
-
describe('array', () => {
|
|
172
|
-
const cases: string[][] = [['bar'], ['baz'], ['bar', 'baz']]
|
|
173
|
-
it.each(cases)('only returns payloads that have an array containing all the values supplied', async (...foo) => {
|
|
174
|
-
type WithFoo = { foo?: string[] }
|
|
175
|
-
const query = new PayloadBuilder<PayloadDivinerQueryPayload & WithFoo>({ schema: PayloadDivinerQuerySchema }).fields({ foo }).build()
|
|
176
|
-
const results = await sut.divine([query])
|
|
177
|
-
expect(results.length).toBeGreaterThan(0)
|
|
178
|
-
expect(results.every(result => foo.every(v => (result as unknown as WithFoo)?.foo?.includes(v)))).toBe(true)
|
|
179
|
-
})
|
|
180
|
-
})
|
|
181
|
-
})
|
|
182
|
-
})
|
|
183
|
-
})
|