mirror of
https://github.com/zhigang1992/mobx-utils.git
synced 2026-01-12 22:48:56 +08:00
65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
"use strict"
|
|
|
|
const utils = require("../src/mobx-utils")
|
|
const mobx = require("mobx")
|
|
|
|
mobx.configure({ enforceActions: "observed" })
|
|
|
|
test("sync processor should work", () => {
|
|
const q = mobx.observable([1, 2])
|
|
const res = []
|
|
|
|
const stop = utils.queueProcessor(q, (v) => res.push(v * 2))
|
|
|
|
expect(res).toEqual([2, 4])
|
|
expect(q.length).toBe(0)
|
|
|
|
mobx.runInAction(() => q.push(3))
|
|
expect(res).toEqual([2, 4, 6])
|
|
|
|
mobx.runInAction(() => q.push(4, 5))
|
|
expect(q.length).toBe(0)
|
|
expect(res).toEqual([2, 4, 6, 8, 10])
|
|
|
|
mobx.runInAction(() => {
|
|
q.unshift(6, 7)
|
|
expect(q.length).toBe(2)
|
|
expect(res).toEqual([2, 4, 6, 8, 10])
|
|
})
|
|
|
|
expect(q.length).toBe(0)
|
|
expect(res).toEqual([2, 4, 6, 8, 10, 12, 14])
|
|
|
|
stop()
|
|
mobx.runInAction(() => q.push(42))
|
|
expect(q.length).toBe(1)
|
|
expect(res).toEqual([2, 4, 6, 8, 10, 12, 14])
|
|
})
|
|
|
|
test("async processor should work", (done) => {
|
|
const q = mobx.observable([1, 2])
|
|
const res = []
|
|
|
|
const stop = utils.queueProcessor(q, (v) => res.push(v * 2), 10)
|
|
|
|
expect(res.length).toBe(0)
|
|
expect(q.length).toBe(2)
|
|
|
|
setTimeout(() => {
|
|
expect(res).toEqual([2, 4])
|
|
expect(q.length).toBe(0)
|
|
|
|
mobx.runInAction(() => q.push(3))
|
|
expect(q.length).toBe(1)
|
|
expect(res).toEqual([2, 4])
|
|
|
|
setTimeout(() => {
|
|
expect(q.length).toBe(0)
|
|
expect(res).toEqual([2, 4, 6])
|
|
|
|
stop()
|
|
done()
|
|
}, 50)
|
|
}, 50)
|
|
})
|