@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
95 lines (84 loc) • 2.53 kB
text/typescript
import { Request } from 'express'
import MultiSelectUtils from './utils'
import { FilterValue } from '../../_filters/types'
import { FilterType } from '../../_filters/filter-input/enum'
describe('MultiSelectUtils', () => {
describe('setValueFromRequest', () => {
let filter: FilterValue
let req: Request
const prefix = 'filters.'
it('should init values to an empty array when filter value is empty', () => {
filter = {
text: 'string',
name: 'string',
type: FilterType.multiselect,
}
req = { query: {} } as unknown as Request
const result = MultiSelectUtils.setValueFromRequest(filter, req, prefix)
expect(result).toEqual({
requestfilterValue: null,
requestfilterValues: [],
})
})
it('should init values to an empty array when preventDefault is set', () => {
filter = {
text: 'string',
name: 'string',
type: FilterType.multiselect,
value: 'value1,value2',
}
req = {
query: {
preventDefault: true,
},
} as unknown as Request
const result = MultiSelectUtils.setValueFromRequest(filter, req, prefix)
expect(result).toEqual({
requestfilterValue: null,
requestfilterValues: [],
})
})
it('should init the values from a single query param', () => {
filter = {
text: 'string',
name: 'field1',
type: FilterType.multiselect,
value: 'value1',
}
req = {
query: {
preventDefault: true,
'filters.field1': 'value1',
},
} as unknown as Request
const result = MultiSelectUtils.setValueFromRequest(filter, req, prefix)
expect(result).toEqual({
requestfilterValue: 'value1',
requestfilterValues: ['value1'],
})
})
it('should init the values from multiple query params', () => {
filter = {
text: 'string',
name: 'field1',
type: FilterType.multiselect,
value: 'value1',
}
req = {
query: {
preventDefault: true,
'filters.field1': ['value1', 'value2'],
},
} as unknown as Request
const result = MultiSelectUtils.setValueFromRequest(filter, req, prefix)
expect(result).toEqual({
requestfilterValue: 'value1,value2',
requestfilterValues: ['value1', 'value2'],
})
})
})
describe('getQueryFromDefinition', () => {
// TODO:
expect(true)
})
})