| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import Dep, { cleanupDeps } from 'core/observer/dep'
- describe('Dep', () => {
- let dep
- beforeEach(() => {
- dep = new Dep()
- })
- describe('instance', () => {
- it('should be created with correct properties', () => {
- expect(dep.subs.length).toBe(0)
- expect(new Dep().id).toBe(dep.id + 1)
- })
- })
- describe('addSub()', () => {
- it('should add sub', () => {
- dep.addSub(null)
- expect(dep.subs.length).toBe(1)
- expect(dep.subs[0]).toBe(null)
- })
- })
- describe('removeSub()', () => {
- it('should remove sub', () => {
- const sub = {}
- dep.subs.push(sub)
- dep.removeSub(sub)
- expect(dep.subs.includes(sub)).toBe(false)
- // nulled subs are cleared on next flush
- cleanupDeps()
- expect(dep.subs.length).toBe(0)
- })
- })
- describe('depend()', () => {
- let _target
- beforeAll(() => {
- _target = Dep.target
- })
- afterAll(() => {
- Dep.target = _target
- })
- it('should do nothing if no target', () => {
- Dep.target = null
- dep.depend()
- })
- it('should add itself to target', () => {
- Dep.target = { addDep: vi.fn() } as any
- dep.depend()
- expect(Dep.target!.addDep).toHaveBeenCalledWith(dep)
- })
- })
- describe('notify()', () => {
- it('should notify subs', () => {
- dep.subs.push({ update: vi.fn() })
- dep.notify()
- expect(dep.subs[0].update).toHaveBeenCalled()
- })
- })
- })
|