wip: improve computed typing + test for setters

This commit is contained in:
Evan You
2019-08-21 12:01:05 -04:00
parent 8d99ab1ff8
commit 0aff144f93
6 changed files with 60 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
import { computed, reactive, effect, stop } from '../src'
import { computed, reactive, effect, stop, ref } from '../src'
describe('reactivity/computed', () => {
it('should return updated value', () => {
@@ -123,6 +123,38 @@ describe('reactivity/computed', () => {
})
it('should support setter', () => {
// TODO
const n = ref(1)
const plusOne = computed({
get: () => n.value + 1,
set: val => {
n.value = val - 1
}
})
expect(plusOne.value).toBe(2)
n.value++
expect(plusOne.value).toBe(3)
plusOne.value = 0
expect(n.value).toBe(-1)
})
it('should trigger effect w/ setter', () => {
const n = ref(1)
const plusOne = computed({
get: () => n.value + 1,
set: val => {
n.value = val - 1
}
})
let dummy
effect(() => {
dummy = n.value
})
expect(dummy).toBe(1)
plusOne.value = 0
expect(dummy).toBe(-1)
})
})

View File

@@ -45,7 +45,7 @@ describe('reactivity/immutable', () => {
})
it('should not allow mutation', () => {
const observed = immutable({ foo: 1, bar: { baz: 2 } })
const observed: any = immutable({ foo: 1, bar: { baz: 2 } })
observed.foo = 2
expect(observed.foo).toBe(1)
expect(warn).toHaveBeenCalledTimes(1)
@@ -76,7 +76,7 @@ describe('reactivity/immutable', () => {
})
it('should not trigger effects when locked', () => {
const observed = immutable({ a: 1 })
const observed: any = immutable({ a: 1 })
let dummy
effect(() => {
dummy = observed.a
@@ -88,7 +88,7 @@ describe('reactivity/immutable', () => {
})
it('should trigger effects when unlocked', () => {
const observed = immutable({ a: 1 })
const observed: any = immutable({ a: 1 })
let dummy
effect(() => {
dummy = observed.a
@@ -146,7 +146,7 @@ describe('reactivity/immutable', () => {
})
it('should allow mutation when unlocked', () => {
const observed: any[] = immutable([{ foo: 1, bar: { baz: 2 } }])
const observed: any = immutable([{ foo: 1, bar: { baz: 2 } }])
unlock()
observed[1] = 2
observed.push(3)
@@ -162,7 +162,7 @@ describe('reactivity/immutable', () => {
})
it('should not trigger effects when locked', () => {
const observed = immutable([{ a: 1 }])
const observed: any = immutable([{ a: 1 }])
let dummy
effect(() => {
dummy = observed[0].a
@@ -177,7 +177,7 @@ describe('reactivity/immutable', () => {
})
it('should trigger effects when unlocked', () => {
const observed = immutable([{ a: 1 }])
const observed: any = immutable([{ a: 1 }])
let dummy
effect(() => {
dummy = observed[0].a
@@ -256,7 +256,7 @@ describe('reactivity/immutable', () => {
const key1 = {}
const key2 = {}
const original = new Collection([[key1, {}], [key2, {}]])
const observed = immutable(original)
const observed: any = immutable(original)
for (const [key, value] of observed) {
expect(isImmutable(key)).toBe(true)
expect(isImmutable(value)).toBe(true)
@@ -322,7 +322,7 @@ describe('reactivity/immutable', () => {
if (Collection === Set) {
test('should retrive immutable values on iteration', () => {
const original = new Collection([{}, {}])
const observed = immutable(original)
const observed: any = immutable(original)
for (const value of observed) {
expect(isImmutable(value)).toBe(true)
}

View File

@@ -32,7 +32,7 @@ describe('reactivity/value', () => {
expect(dummy).toBe(2)
})
it('should work like a normal property when nested in an observable', () => {
it('should work like a normal property when nested in a reactive object', () => {
const a = ref(1)
const obj = reactive({
a,