authSlice.test.ts 1.18 KB
import { describe, it, expect } from 'vitest'
import { configureStore } from '@reduxjs/toolkit'
import authReducer, { setCredentials, clearCredentials, UserInfoVO } from '../store/slices/authSlice'

function makeStore() {
  return configureStore({ reducer: { auth: authReducer } })
}

const sampleUserInfo: UserInfoVO = {
  userId: 'u1',
  username: 'admin',
  userType: '普通用户',
  language: '中文',
  brandId: 'b1'
}

describe('authSlice', () => {
  it('setCredentials_updatesAllStateFields', () => {
    const store = makeStore()
    store.dispatch(setCredentials({ accessToken: 't1', refreshToken: 'r1', userInfo: sampleUserInfo }))
    const state = store.getState().auth
    expect(state.accessToken).toBe('t1')
    expect(state.refreshToken).toBe('r1')
    expect(state.userInfo?.userId).toBe('u1')
  })

  it('clearCredentials_resetsToNull', () => {
    const store = makeStore()
    store.dispatch(setCredentials({ accessToken: 't1', refreshToken: 'r1', userInfo: sampleUserInfo }))
    store.dispatch(clearCredentials())
    const state = store.getState().auth
    expect(state.accessToken).toBeNull()
    expect(state.refreshToken).toBeNull()
    expect(state.userInfo).toBeNull()
  })
})