@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
76 lines (59 loc) • 2.23 kB
text/typescript
// eslint-disable-next-line import/no-extraneous-dependencies
import { createClient } from 'redis'
import UserDataStore from './reportDataStore'
import { ReportStoreConfig } from '../types/ReportStore'
type RedisClient = ReturnType<typeof createClient>
const redisClient = {
get: jest.fn(),
set: jest.fn(),
on: jest.fn(),
connect: jest.fn(),
isOpen: true,
} as unknown as jest.Mocked<RedisClient>
describe('userDataStore', () => {
let userDataStore: UserDataStore
beforeEach(() => {
userDataStore = new UserDataStore(redisClient as unknown as RedisClient)
})
afterEach(() => {
jest.resetAllMocks()
})
describe('get user config', () => {
it('Can retrieve user config', async () => {
const mockStoreData: ReportStoreConfig = {
requestedReports: [],
recentlyViewedReports: [],
bookmarks: [],
}
redisClient.get.mockResolvedValue(JSON.stringify(mockStoreData))
await expect(userDataStore.getUserConfig('user-1')).resolves.toEqual(mockStoreData)
expect(redisClient.get).toHaveBeenCalledWith('dprReportStoreUser:user-1')
})
it('Connects when no connection calling getUserConfig', async () => {
;(redisClient as unknown as Record<string, boolean>).isOpen = false
await userDataStore.getUserConfig('user-1')
expect(redisClient.connect).toHaveBeenCalledWith()
})
})
describe('set user config', () => {
it('Can set user config', async () => {
const mockStoreData: ReportStoreConfig = {
requestedReports: [],
recentlyViewedReports: [],
bookmarks: [],
}
await userDataStore.setUserConfig('user-1', mockStoreData)
expect(redisClient.set).toHaveBeenCalledWith('dprReportStoreUser:user-1', JSON.stringify(mockStoreData))
})
it('Connects when no connection calling setUserConfig', async () => {
const mockStoreData: ReportStoreConfig = {
requestedReports: [],
recentlyViewedReports: [],
bookmarks: [],
}
;(redisClient as unknown as Record<string, boolean>).isOpen = false
await userDataStore.setUserConfig('user-1', mockStoreData)
expect(redisClient.connect).toHaveBeenCalledWith()
})
})
})