Fix count endpoint with filters

Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2020-04-06 14:22:50 +02:00
parent a940bbc8c0
commit bdbec4e3f0
5 changed files with 32 additions and 9 deletions

View File

@ -1,16 +1,15 @@
import { isEmpty, toString } from 'lodash';
const generateSearchFromFilters = filters => {
const generateSearchFromFilters = (filters, paramsToFilter = []) => {
return Object.keys(filters)
.filter(key => !isEmpty(toString(filters[key])))
.filter(key => !paramsToFilter.includes(key) && !isEmpty(toString(filters[key])))
.map(key => {
let ret = `${key}=${filters[key]}`;
if (key === 'filters') {
const formattedFilters = filters[key]
.reduce((acc, curr) => {
const key =
curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`;
const key = curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`;
acc.push(`${key}=${curr.value}`);
return acc;

View File

@ -123,10 +123,11 @@ const HomePage = () => {
};
const fetchDataCount = async () => {
const params = generateStringFromParams(query, ['_limit', '_sort', '_start']);
const requestURL = getRequestUrl('files/count');
try {
const { count } = await request(requestURL, {
const { count } = await request(`${requestURL}?${params}`, {
method: 'GET',
});

View File

@ -1,12 +1,14 @@
import { isEmpty, toString } from 'lodash';
import generateParamsFromQuery from './generateParamsFromQuery';
const generateStringFromParams = query => {
const generateStringFromParams = (query, paramsToFilter = []) => {
let paramsString = '';
const paramsObject = generateParamsFromQuery(query);
Object.keys(paramsObject)
.filter(key => !isEmpty(toString(paramsObject[key])))
.filter(key => {
return !paramsToFilter.includes(key) && !isEmpty(toString(paramsObject[key]));
})
.forEach(key => {
const value = paramsObject[key];

View File

@ -41,5 +41,25 @@ describe('MEDIA LIBRARY | containers | HomePage | utils', () => {
expect(generateStringFromParams(query)).toEqual(expected);
});
});
describe('it should filter the defined params', () => {
it('should return _ncontains instead of _contains', () => {
const search = '?mime_ncontains=file&test=true';
const query = new URLSearchParams(search);
const expected = '_limit=10&_start=0&mime_contains=image&mime_contains=video&test=true';
expect(generateStringFromParams(query, [])).toEqual(expected);
});
it('should not return the _limit param', () => {
const search = '?mime_ncontains=file';
const query = new URLSearchParams(search);
const expected = '_start=0&mime_contains=image&mime_contains=video';
expect(generateStringFromParams(query, ['_limit'])).toEqual(expected);
});
});
});
});

View File

@ -293,9 +293,11 @@ const InputModalStepperProvider = ({
const fetchMediaLibFilesCount = async () => {
const requestURL = getRequestUrl('files/count');
const compactedParams = compactParams(params);
const paramsToSend = generateSearchFromFilters(compactedParams, ['_limit', '_sort', '_start']);
try {
return await request(`${requestURL}`, {
return await request(`${requestURL}?${paramsToSend}`, {
method: 'GET',
});
} catch (err) {
@ -317,7 +319,6 @@ const InputModalStepperProvider = ({
const fetchMediaLibFiles = async () => {
const requestURL = getRequestUrl('files');
const compactedParams = compactParams(params);
const paramsToSend = generateSearchFromFilters(compactedParams);