Skip to content
This repository was archived by the owner on Dec 9, 2023. It is now read-only.

Commit 69fff13

Browse files
committed
update tests & runner to use string-based API for Assessment data
1 parent cdc207b commit 69fff13

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

src/sensemaker_client/assessment_loading.ts

+28-28
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { of, filter, lastValueFrom } from 'rxjs'
33

44
import { scheduler, mockAssessmentsStore, mockAssessment, mockEh } from '../store_mocks'
55
import { Assessment } from '@neighbourhoods/client'
6-
import { encodeHashToBase64 } from "@holochain/client"
6+
import { }from "@holochain/client"
77

88

99

@@ -83,10 +83,10 @@ test('it emits a filtered stream of resourceAssessments based on matching resour
8383

8484
// START TEST LOGIC
8585

86-
const observing1 = store.resourceAssessments({ dimensionEhs: [encodeHashToBase64(d1)] })
87-
const observing2 = store.resourceAssessments({ dimensionEhs: [encodeHashToBase64(d1), encodeHashToBase64(d2)] })
88-
const observingR1 = store.resourceAssessments({ resourceEhs: [encodeHashToBase64(r1)] })
89-
const observingR1D1 = store.resourceAssessments({ resourceEhs: [encodeHashToBase64(r1)], dimensionEhs: [encodeHashToBase64(d1)] })
86+
const observing1 = store.resourceAssessments({ dimensionEhs: [d1] })
87+
const observing2 = store.resourceAssessments({ dimensionEhs: [d1, d2] })
88+
const observingR1 = store.resourceAssessments({ resourceEhs: [r1] })
89+
const observingR1D1 = store.resourceAssessments({ resourceEhs: [r1], dimensionEhs: [d1] })
9090

9191
await store.loadAssessmentsForResources({})
9292

@@ -101,8 +101,8 @@ test('it emits a filtered stream of resourceAssessments based on matching resour
101101

102102
// late subscribers get existing data
103103

104-
const observing3 = store.resourceAssessments({ dimensionEhs: [encodeHashToBase64(d1)] })
105-
const observing4 = store.resourceAssessments({ dimensionEhs: [encodeHashToBase64(d1), encodeHashToBase64(d2)] })
104+
const observing3 = store.resourceAssessments({ dimensionEhs: [d1] })
105+
const observing4 = store.resourceAssessments({ dimensionEhs: [d1, d2] })
106106

107107
testScheduler.run(({ expectObservable }) => {
108108
expectObservable(observing3).toBe('a', { a: new Set([a1, a3]) })
@@ -130,10 +130,10 @@ test('it provides convenience methods for accessing Assessment data in Applet wi
130130

131131
// START TEST LOGIC
132132

133-
const observing1 = store.assessmentsForResource(encodeHashToBase64(r1))
134-
const observing4 = store.assessmentsForResourceDimension(encodeHashToBase64(r1), encodeHashToBase64(d2))
135-
const observing2 = store.assessmentsForResourceDimensions(encodeHashToBase64(r1), [encodeHashToBase64(d1)])
136-
const observing3 = store.assessmentsForResourceDimensions(encodeHashToBase64(r1), [encodeHashToBase64(d1), encodeHashToBase64(d2)])
133+
const observing1 = store.assessmentsForResource(r1)
134+
const observing4 = store.assessmentsForResourceDimension(r1, d2)
135+
const observing2 = store.assessmentsForResourceDimensions(r1, [d1])
136+
const observing3 = store.assessmentsForResourceDimensions(r1, [d1, d2])
137137

138138
store.mockAssessments({
139139
'resource_001': [a1, a5],
@@ -152,7 +152,7 @@ test('it provides convenience methods for accessing Assessment data in Applet wi
152152

153153
// late subscribers get existing data
154154

155-
const observing1E = store.assessmentsForResource(encodeHashToBase64(r1))
155+
const observing1E = store.assessmentsForResource(r1)
156156

157157
testScheduler.run(({ expectObservable }) => {
158158
expectObservable(observing1E).toBe('a', { a: new Set([a1, a5, a6]) })
@@ -164,7 +164,7 @@ test('it provides convenience methods for accessing Assessment data in Applet wi
164164
store.mockAssessments({ 'resource_003': [a7] })
165165
await store.loadAssessmentsForResources({})
166166

167-
const observing5 = store.latestAssessmentOf(encodeHashToBase64(r1), encodeHashToBase64(d2))
167+
const observing5 = store.latestAssessmentOf(r1, d2)
168168

169169
testScheduler.run(({ expectObservable }) => {
170170
expectObservable(observing5).toBe('a', { a: a7 })
@@ -176,7 +176,7 @@ test('it provides convenience methods for accessing Assessment data in Applet wi
176176
store.mockAssessments({ 'resource_003': [a8] })
177177
await store.loadAssessmentsForResources({})
178178

179-
const observing6 = store.latestAssessmentOf(encodeHashToBase64(r1), encodeHashToBase64(d2))
179+
const observing6 = store.latestAssessmentOf(r1, d2)
180180

181181
testScheduler.run(({ expectObservable }) => {
182182
expectObservable(observing5).toBe('a', { a: a8 })
@@ -189,20 +189,20 @@ test('it provides convenience methods for accessing Assessment data in Applet wi
189189
store.mockAssessments({ 'resource_003': [a9] })
190190
await store.loadAssessmentsForResources({})
191191

192-
const observing7 = store.latestAssessmentOf(encodeHashToBase64(r1), encodeHashToBase64(d2))
192+
const observing7 = store.latestAssessmentOf(r1, d2)
193193

194194
testScheduler.run(({ expectObservable }) => {
195195
expectObservable(observing7).toBe('a', { a: a8 })
196196
})
197197

198198
// more complex set-based accessor
199199

200-
const observing8 = store.latestAssessmentsOfDimensions(encodeHashToBase64(r1), [encodeHashToBase64(d2), encodeHashToBase64(d1)])
200+
const observing8 = store.latestAssessmentsOfDimensions(r1, [d2, d1])
201201

202202
testScheduler.run(({ expectObservable }) => {
203203
expectObservable(observing8).toBe('a', { a: {
204-
[encodeHashToBase64(d1)]: a1,
205-
[encodeHashToBase64(d2)]: a8,
204+
[d1]: a1,
205+
[d2]: a8,
206206
} })
207207
})
208208
})
@@ -225,8 +225,8 @@ test('it provides convenience methods for accessing Assessment data in the Sense
225225

226226
// START TEST LOGIC
227227

228-
const observing1 = store.assessmentsForDimension(encodeHashToBase64(d1))
229-
const observing2 = store.assessmentsForResourcesInDimension(encodeHashToBase64(d1), [encodeHashToBase64(r1)])
228+
const observing1 = store.assessmentsForDimension(d1)
229+
const observing2 = store.assessmentsForResourcesInDimension(d1, [r1])
230230

231231
store.mockAssessments({
232232
'resource_001': [a1, a5, a6],
@@ -243,7 +243,7 @@ test('it provides convenience methods for accessing Assessment data in the Sense
243243

244244
// late subscribers get existing data
245245

246-
const observing2E = store.assessmentsForResourcesInDimension(encodeHashToBase64(d1), [encodeHashToBase64(r1)])
246+
const observing2E = store.assessmentsForResourcesInDimension(d1, [r1])
247247

248248
testScheduler.run(({ expectObservable }) => {
249249
expectObservable(observing2E).toBe('a', { a: new Set([a1, a6]) })
@@ -255,12 +255,12 @@ test('it provides convenience methods for accessing Assessment data in the Sense
255255
store.mockAssessments({ 'resource_003': [a7] })
256256
await store.loadAssessmentsForResources({})
257257

258-
const observing5 = store.latestAssessmentsForResourcesInDimension(encodeHashToBase64(d1), [encodeHashToBase64(r1), encodeHashToBase64(r2)])
258+
const observing5 = store.latestAssessmentsForResourcesInDimension(d1, [r1, r2])
259259

260260
testScheduler.run(({ expectObservable }) => {
261261
expectObservable(observing5).toBe('a', { a: {
262-
[encodeHashToBase64(r1)]: a6,
263-
[encodeHashToBase64(r2)]: a7,
262+
[r1]: a6,
263+
[r2]: a7,
264264
} })
265265
})
266266

@@ -272,8 +272,8 @@ test('it provides convenience methods for accessing Assessment data in the Sense
272272

273273
testScheduler.run(({ expectObservable }) => {
274274
expectObservable(observing5).toBe('a', { a: {
275-
[encodeHashToBase64(r1)]: a8,
276-
[encodeHashToBase64(r2)]: a7,
275+
[r1]: a8,
276+
[r2]: a7,
277277
} })
278278
})
279279

@@ -286,8 +286,8 @@ test('it provides convenience methods for accessing Assessment data in the Sense
286286
testScheduler.run(({ expectObservable }) => {
287287
expectObservable(observing5).toBe('a', {
288288
a: {
289-
[encodeHashToBase64(r1)]: a8,
290-
[encodeHashToBase64(r2)]: a7,
289+
[r1]: a8,
290+
[r2]: a7,
291291
}
292292
})
293293
})

src/store_mocks.ts

+12-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
import { randomBytes } from 'crypto'
33
import { TestScheduler } from 'rxjs/testing'
44
import equal from 'fast-deep-equal/es6'
5-
import type { Timestamp } from '@holochain/client'
5+
import { Timestamp, encodeHashToBase64, EntryHashB64 } from '@holochain/client'
66

77
import {
88
SensemakerStore, SensemakerService,
9-
Assessment, AssessmentObservable,
10-
GetAssessmentsForResourceInput, ResourceAssessmentsResponse,
9+
Assessment,
10+
GetAssessmentsForResourceInput,
1111
RangeValue,
12-
ResourceAssessmentResults,
1312
} from '@neighbourhoods/client'
1413

1514
const flattenFrames = (emitted) => emitted.reduce((fs, f) => {
@@ -75,12 +74,14 @@ const mockHash = (prefix) => {
7574
return result
7675
}
7776

78-
export const mockEh = () => mockHash(HOLOHASH_PREFIX_ENTRY)
79-
export const mockAgentKey = () => mockHash(HOLOHASH_PREFIX_AGENT)
77+
const mockEhRaw = () => mockHash(HOLOHASH_PREFIX_ENTRY)
78+
const mockAhRaw = () => mockHash(HOLOHASH_PREFIX_AGENT)
79+
export const mockEh = () => encodeHashToBase64(mockEhRaw())
80+
export const mockAgentKey = () => encodeHashToBase64(mockAhRaw())
8081

8182
let timeOff = 0
8283

83-
export const mockAssessment = (val: RangeValue, rEh?: Uint8Array | 0, dEh?: Uint8Array | 0, time: null | Timestamp = null) => ({
84+
export const mockAssessment = (val: RangeValue, rEh?: string | 0, dEh?: string | 0, time: null | Timestamp = null): Assessment => ({
8485
resource_eh: rEh || mockEh(),
8586
dimension_eh: dEh || mockEh(),
8687
resource_def_eh: mockEh(),
@@ -90,14 +91,16 @@ export const mockAssessment = (val: RangeValue, rEh?: Uint8Array | 0, dEh?: Uint
9091
timestamp: time || (Date.now() + (++timeOff * 1000)),
9192
})
9293

94+
type MockedResponse = Record<EntryHashB64, Assessment[]>
95+
9396
interface MockableStore extends SensemakerStore {
94-
mockAssessments: (withAssessments: ResourceAssessmentsResponse) => void
97+
mockAssessments: (withAssessments: MockedResponse) => void
9598
}
9699
interface MockedService extends SensemakerService {
97100
_assessments: Assessment[]
98101
}
99102

100-
export async function mockAssessmentsStore(withAssessments: ResourceAssessmentsResponse) {
103+
export async function mockAssessmentsStore(withAssessments: MockedResponse) {
101104
const pubKey = mockAgentKey()
102105
const serviceMock = {
103106
_assessments: withAssessments,

0 commit comments

Comments
 (0)