Skip to content

Commit 517c0eb

Browse files
committed
refactor: simplify default reset
1 parent 89bea36 commit 517c0eb

File tree

4 files changed

+58
-4
lines changed

4 files changed

+58
-4
lines changed

src/database/subscribe.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export function bindAsObject(
9393

9494
return (reset?: ResetOption) => {
9595
unsubscribe()
96-
if (reset !== false) {
96+
if (reset) {
9797
const value = typeof reset === 'function' ? reset() : null
9898
target.value = value
9999
}
@@ -209,7 +209,7 @@ export function bindAsArray(
209209
removeChildRemovedListener()
210210
removeChildChangedListener()
211211
removeChildMovedListener()
212-
if (reset !== false) {
212+
if (reset) {
213213
const value = typeof reset === 'function' ? reset() : []
214214
// we trust the user to return an array
215215
target.value = value as any

src/firestore/subscribe.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ export function bindCollection<T = unknown>(
418418

419419
return (reset?: FirestoreRefOptions['reset']) => {
420420
stopOnSnapshot()
421-
if (reset !== false) {
421+
if (reset) {
422422
const value = typeof reset === 'function' ? reset() : []
423423
ops.set(target, key, value)
424424
}
@@ -475,7 +475,7 @@ export function bindDocument<T>(
475475

476476
return (reset?: FirestoreRefOptions['reset']) => {
477477
stopOnSnapshot()
478-
if (reset !== false) {
478+
if (reset) {
479479
const value = typeof reset === 'function' ? reset() : null
480480
ops.set(target, key, value)
481481
}

tests/database/list.spec.ts

+27
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,33 @@ describe('Database lists', () => {
176176
await wrapper.unmount()
177177
expect(data.value).toEqual('reset')
178178
})
179+
180+
it('skips resetting by default when manually reset', async () => {
181+
const { listRef, data, stop } = factory()
182+
183+
await push(listRef, { name: 'a' })
184+
expect(data.value).toHaveLength(1)
185+
stop()
186+
expect(data.value).toHaveLength(1)
187+
})
188+
189+
it('resets by default when manually reset', async () => {
190+
const { listRef, data, stop } = factory()
191+
192+
await push(listRef, { name: 'a' })
193+
expect(data.value).toHaveLength(1)
194+
stop(true)
195+
expect(data.value).toHaveLength(0)
196+
})
197+
198+
it('can be reset to a specific value when manually reset', async () => {
199+
const { listRef, data, stop } = factory()
200+
201+
await push(listRef, { name: 'a' })
202+
expect(data.value).toHaveLength(1)
203+
stop(() => [1])
204+
expect(data.value).toEqual([1])
205+
})
179206
})
180207

181208
it('awaits before setting the value if wait', async () => {

tests/firestore/collection.spec.ts

+27
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,33 @@ describe(
264264
await wrapper.unmount()
265265
expect(data.value).toEqual('reset')
266266
})
267+
268+
it('skips resetting by default when manually reset', async () => {
269+
const { listRef, data, stop } = factory()
270+
271+
await addDoc(listRef, { name: 'a' })
272+
expect(data.value).toHaveLength(1)
273+
stop()
274+
expect(data.value).toHaveLength(1)
275+
})
276+
277+
it('resets by default when manually reset', async () => {
278+
const { listRef, data, stop } = factory()
279+
280+
await addDoc(listRef, { name: 'a' })
281+
expect(data.value).toHaveLength(1)
282+
stop(true)
283+
expect(data.value).toHaveLength(0)
284+
})
285+
286+
it('can be reset to a specific value when manually reset', async () => {
287+
const { listRef, data, stop } = factory()
288+
289+
await addDoc(listRef, { name: 'a' })
290+
expect(data.value).toHaveLength(1)
291+
stop(() => [1])
292+
expect(data.value).toEqual([1])
293+
})
267294
})
268295

269296
it('awaits before setting the value if wait', async () => {

0 commit comments

Comments
 (0)