Ensured tags, servers and domains search is case insensitive

This commit is contained in:
Alejandro Celaya 2022-08-07 13:26:26 +02:00
parent 4a92d0ff11
commit f69bda351d
6 changed files with 9 additions and 9 deletions

View file

@ -65,7 +65,7 @@ export default buildReducer<DomainsList, DomainsCombinedAction>({
({ ...initialState, domains, filteredDomains: domains, defaultRedirects }),
[FILTER_DOMAINS]: (state, { searchTerm }) => ({
...state,
filteredDomains: state.domains.filter(({ domain }) => domain.toLowerCase().match(searchTerm)),
filteredDomains: state.domains.filter(({ domain }) => domain.toLowerCase().match(searchTerm.toLowerCase())),
}),
[EDIT_DOMAIN_REDIRECTS]: (state, { domain, redirects }) => ({
...state,

View file

@ -28,7 +28,7 @@ export const ManageServers = (
const allServers = Object.values(servers);
const [serversList, setServersList] = useState(allServers);
const filterServers = (searchTerm: string) => setServersList(
allServers.filter(({ name, url }) => `${name} ${url}`.match(searchTerm)),
allServers.filter(({ name, url }) => `${name} ${url}`.toLowerCase().match(searchTerm.toLowerCase())),
);
const hasAutoConnect = serversList.some(({ autoConnect }) => !!autoConnect);
const [errorImporting, setErrorImporting] = useTimeoutToggle(false, SHOW_IMPORT_MSG_TIME);

View file

@ -96,7 +96,7 @@ export default buildReducer<TagsList, TagsCombinedAction>({
}),
[FILTER_TAGS]: (state, { searchTerm }) => ({
...state,
filteredTags: state.tags.filter((tag) => tag.toLowerCase().match(searchTerm)),
filteredTags: state.tags.filter((tag) => tag.toLowerCase().match(searchTerm.toLowerCase())),
}),
[CREATE_VISITS]: (state, { createdVisits }) => ({
...state,

View file

@ -28,7 +28,7 @@ describe('domainsListReducer', () => {
const buildShlinkApiClient = () => Mock.of<ShlinkApiClient>({ listDomains, health });
const filteredDomains = [
Mock.of<Domain>({ domain: 'foo', status: 'validating' }),
Mock.of<Domain>({ domain: 'boo', status: 'validating' }),
Mock.of<Domain>({ domain: 'Boo', status: 'validating' }),
];
const domains = [...filteredDomains, Mock.of<Domain>({ domain: 'bar', status: 'validating' })];
@ -58,7 +58,7 @@ describe('domainsListReducer', () => {
});
it('filters domains on FILTER_DOMAINS', () => {
expect(reducer(Mock.of<DomainsList>({ domains }), action(FILTER_DOMAINS, { searchTerm: 'oo' }))).toEqual(
expect(reducer(Mock.of<DomainsList>({ domains }), action(FILTER_DOMAINS, { searchTerm: 'oO' }))).toEqual(
{ domains, filteredDomains },
);
});

View file

@ -43,7 +43,7 @@ describe('<ManageServers />', () => {
await waitFor(() => expect(screen.getAllByText(/^ManageServersRow/)).toHaveLength(1));
expect(screen.queryByText('No servers found.')).not.toBeInTheDocument();
await search('ba');
await search('Ba');
await waitFor(() => expect(screen.getAllByText(/^ManageServersRow/)).toHaveLength(2));
expect(screen.queryByText('No servers found.')).not.toBeInTheDocument();

View file

@ -67,9 +67,9 @@ describe('tagsListReducer', () => {
});
it('filters original list of tags by provided search term on FILTER_TAGS', () => {
const tags = ['foo', 'bar', 'baz', 'foo2', 'fo'];
const searchTerm = 'fo';
const filteredTags = ['foo', 'foo2', 'fo'];
const tags = ['foo', 'bar', 'baz', 'Foo2', 'fo'];
const searchTerm = 'Fo';
const filteredTags = ['foo', 'Foo2', 'fo'];
expect(reducer(state({ tags }), { type: FILTER_TAGS, searchTerm } as any)).toEqual({
tags,