SEC_Warehouse/tests/unit/store/authSlice.spec.ts

58 lines
1.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { describe, it, expect, beforeEach, vi } from 'vitest'
// 内存 Map 模拟 Taro storage(同 tests/unit/family/family.spec.ts 模式)
const mem = new Map<string, unknown>()
vi.mock('@/utils/storage', () => ({
storage: {
get: <T>(key: string): T | null => (mem.has(key) ? (mem.get(key) as T) : null),
set: <T>(key: string, value: T): void => { mem.set(key, value) },
remove: (key: string): void => { mem.delete(key) }
}
}))
import reducer, { setAuth, clearAuth } from '@/store/authSlice'
import type { WxUserInfo } from '@/api/auth'
const userInfo: WxUserInfo = {
userId: 'u-100',
userType: 1,
avatar: 'https://example.com/a.png',
nickName: '张大爷',
mobile: '13800000000',
gender: 1,
region: '深圳市南山区',
loginFrom: 'miniapp'
}
beforeEach(() => {
mem.clear()
})
describe('authSlice', () => {
it('setAuth 写入 token/userId/userInfo,token 落盘', () => {
let state = reducer(undefined, { type: 'init' })
state = reducer(state, setAuth({ token: 'tk-1', userInfo }))
expect(state.token).toBe('tk-1')
expect(state.userId).toBe('u-100')
expect(state.userInfo).toEqual(userInfo)
expect(mem.get('auth_token')).toBe('tk-1')
})
it('setAuth 后 clearAuth 全部清空并移除持久化 token', () => {
let state = reducer(undefined, { type: 'init' })
state = reducer(state, setAuth({ token: 'tk-1', userInfo }))
state = reducer(state, clearAuth())
expect(state.token).toBeNull()
expect(state.userId).toBeNull()
expect(state.userInfo).toBeNull()
expect(mem.has('auth_token')).toBe(false)
})
it('初始态从 storage 恢复 token', () => {
mem.set('auth_token', 'tk-saved')
const state = reducer(undefined, { type: 'init' })
expect(state.token).toBe('tk-saved')
expect(state.userInfo).toBeNull()
})
})