Skip to content

Commit

Permalink
updating tests and adding debounce
Browse files Browse the repository at this point in the history
  • Loading branch information
brett-onions committed Sep 26, 2024
1 parent 04ae8d3 commit 88c3afd
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 6 deletions.
19 changes: 17 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
"dependencies": {
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.2.1",
"@types/lodash": "^4.17.9",
"lodash": "^4.17.21",
"moment": "^2.29.1",
"react-router-dom": "^6.26.1"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import React, {useEffect} from 'react'
import React, {useCallback, useEffect} from 'react'
import {Box, TextField, MenuItem, Grid, Button, Card} from '@mui/material'
import {DateTimePicker} from '@mui/x-date-pickers/DateTimePicker'
import {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider'
import {AdapterDateFns} from '@mui/x-date-pickers/AdapterDateFns'
import {BasicFilterProps} from '../../interfaces/index.interface'
import {debounce} from 'lodash'

const BasicFilters: React.FC<BasicFilterProps> = ({
status,
Expand All @@ -23,6 +24,12 @@ const BasicFilters: React.FC<BasicFilterProps> = ({
channels,
fetchTransactionLogs
}) => {

const debounceFetchTransactionLogs = useCallback(
debounce(() => fetchTransactionLogs(null, true), 500),
[fetchTransactionLogs]
);

const handleStatusChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setStatus(event.target.value)
}
Expand All @@ -44,7 +51,11 @@ const BasicFilters: React.FC<BasicFilterProps> = ({
}

useEffect(() => {
fetchTransactionLogs(null, true)
(async () => {
await debounceFetchTransactionLogs()
})()

return () => debounceFetchTransactionLogs.cancel()
}, [status, searchQuery, channel, limit, startDate, endDate, reruns])

const handleClearFilters = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider'
import {AdapterDateFns} from '@mui/x-date-pickers/AdapterDateFns'
import CustomizeDialog from '../dialogs/customize.dialog.component'
import {CustomFilterProps} from '../../interfaces/index.interface'
import {debounce} from 'lodash'

const CustomFilters: React.FC<CustomFilterProps> = ({
status,
Expand Down Expand Up @@ -38,6 +39,7 @@ const CustomFilters: React.FC<CustomFilterProps> = ({
fetchTransactionLogs
}) => {
const [open, setOpen] = useState(false)
const debounceFetchTransactionLogs = debounce(fetchTransactionLogs, 10000)

const [visibleFilters, setVisibleFilters] = useState({
status: true,
Expand Down Expand Up @@ -141,8 +143,22 @@ const CustomFilters: React.FC<CustomFilterProps> = ({
}

useEffect(() => {
fetchTransactionLogs(null, true)
}, [status, channel, limit, startDate, endDate, reruns, statusCode, port, path, param, client, method])
debounceFetchTransactionLogs(null, true)
return () => debounceFetchTransactionLogs.cancel()
}, [
status,
channel,
limit,
startDate,
endDate,
reruns,
statusCode,
port,
path,
param,
client,
method
])

return (
<Box sx={{padding: '16px'}}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,18 @@ describe('Interface Conformance Tests', () => {
expect(typeof basicFilterProps.setStatus).toBe('function')
expect(Array.isArray(basicFilterProps.channels)).toBe(true)
expect(basicFilterProps.channels[0]._id).toBe('1')
expect(typeof basicFilterProps.fetchTransactionLogs).toBe('function')
expect(basicFilterProps.fetchTransactionLogs()).resolves.toBe(undefined)

})

it('should conform to CustomFilterProps interface', () => {
expect(customFilterProps.statusCode).toBe(200)
expect(customFilterProps.host).toBe('localhost')
expect(customFilterProps.clients[0].name).toBe('Test Client')
expect(typeof customFilterProps.setClient).toBe('function')
expect(typeof customFilterProps.fetchTransactionLogs).toBe('function')
expect(customFilterProps.fetchTransactionLogs()).resolves.toBe(undefined)
})

it('should conform to CustomizeDialogProps interface', () => {
Expand Down

0 comments on commit 88c3afd

Please sign in to comment.