diff --git a/redisinsight/ui/src/components/virtual-grid/tests/utils.spec.ts b/redisinsight/ui/src/components/virtual-grid/tests/utils.spec.ts
new file mode 100644
index 0000000000..f03d570db1
--- /dev/null
+++ b/redisinsight/ui/src/components/virtual-grid/tests/utils.spec.ts
@@ -0,0 +1,17 @@
+import { getColumnWidth } from '../utils'
+
+const getColumnWidthTests: any[] = [
+ [0, 500, [{ maxWidth: 70, minWidth: 50 }], 50],
+ [1, 500, [{ maxWidth: 70, minWidth: 50 }, { maxWidth: 170, minWidth: 20 }], 20],
+ [0, 500, [{ maxWidth: 470, minWidth: 450 }, { maxWidth: 170, minWidth: 20 }], 450],
+]
+
+const minColumnWidth = 10
+
+describe('getColumnWidth', () => {
+ it.each(getColumnWidthTests)('for input: %s (i), %s (width), %s (columns) should be output: %s',
+ (i, width, columns, expected) => {
+ const result = getColumnWidth(i, width, columns, minColumnWidth)
+ expect(result).toBe(expected)
+ })
+})
diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/StringDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/StringDetails.tsx
index 194e42afba..1832e7ca59 100644
--- a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/StringDetails.tsx
+++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/StringDetails.tsx
@@ -21,7 +21,7 @@ import { RedisResponseBuffer } from 'uiSrc/slices/interfaces'
import { IFetchKeyArgs } from 'uiSrc/constants/prop-types/keys'
import { resetStringValue, stringDataSelector, stringSelector } from 'uiSrc/slices/browser/string'
import { isFormatEditable, isFullStringLoaded } from 'uiSrc/utils'
-import { StringDetailsTable } from './string-details-table'
+import { StringDetailsValue } from './string-details-value'
import { EditItemAction } from '../key-details-actions'
export interface Props extends KeyDetailsHeaderProps {}
@@ -77,7 +77,7 @@ const StringDetails = (props: Props) => {
{!loading && (
- {
setEditItem(isEdit)
diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/index.ts b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/index.ts
deleted file mode 100644
index f62de5cbed..0000000000
--- a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { StringDetailsTable } from './StringDetailsTable'
diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/StringDetailsTable.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/StringDetailsValue.spec.tsx
similarity index 95%
rename from redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/StringDetailsTable.spec.tsx
rename to redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/StringDetailsValue.spec.tsx
index 8771a36ad6..1304ce99d7 100644
--- a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/StringDetailsTable.spec.tsx
+++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/StringDetailsValue.spec.tsx
@@ -16,7 +16,7 @@ import {
} from 'uiSrc/utils/tests/decompressors'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import { downloadFile } from 'uiSrc/utils/dom/downloadFile'
-import { StringDetailsTable, Props } from './StringDetailsTable'
+import { StringDetailsValue, Props } from './StringDetailsValue'
const STRING_VALUE = 'string-value'
const STRING_VALUE_SPACE = 'string value'
@@ -70,11 +70,11 @@ jest.mock('react-redux', () => ({
useDispatch: () => jest.fn().mockReturnValue(() => jest.fn()),
}))
-describe('StringDetailsTable', () => {
+describe('StringDetailsValue', () => {
it('should render', () => {
expect(
render(
-
)
@@ -83,7 +83,7 @@ describe('StringDetailsTable', () => {
it('should render textarea if edit mode', () => {
render(
- {
it('should update string value', () => {
render(
- {
it('should stay empty string after cancel', async () => {
render(
- {
it('should update value after apply', () => {
render(
- {
stringDataSelector.mockImplementation(stringDataSelectorMock)
render(
-
)
@@ -173,7 +173,7 @@ describe('StringDetailsTable', () => {
stringDataSelector.mockImplementation(stringDataSelectorMock)
render(
-
@@ -197,7 +197,7 @@ describe('StringDetailsTable', () => {
stringDataSelector.mockImplementation(stringDataSelectorMock)
render(
-
)
@@ -211,7 +211,7 @@ describe('StringDetailsTable', () => {
stringDataSelector.mockImplementation(stringDataSelectorMock)
render(
-
)
@@ -225,7 +225,7 @@ describe('StringDetailsTable', () => {
stringDataSelector.mockImplementation(stringDataSelectorMock)
render(
-
)
@@ -253,7 +253,7 @@ describe('StringDetailsTable', () => {
}))
render(
- {
}))
render(
- void;
}
-const StringDetailsTable = (props: Props) => {
+const StringDetailsValue = (props: Props) => {
const { isEditItem, setIsEdit, onRefresh } = props
const { compressor = null } = useSelector(connectedInstanceSelector)
@@ -291,4 +291,4 @@ const StringDetailsTable = (props: Props) => {
)
}
-export { StringDetailsTable }
+export { StringDetailsValue }
diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/index.ts b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/index.ts
new file mode 100644
index 0000000000..9ff5872ec2
--- /dev/null
+++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/index.ts
@@ -0,0 +1 @@
+export { StringDetailsValue } from './StringDetailsValue'
diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/styles.module.scss b/redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/styles.module.scss
similarity index 100%
rename from redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-table/styles.module.scss
rename to redisinsight/ui/src/pages/browser/modules/key-details/components/string-details/string-details-value/styles.module.scss
diff --git a/redisinsight/ui/src/utils/monitorUtils.ts b/redisinsight/ui/src/utils/monitorUtils.ts
index ba7f16e4bc..940bfeb9f8 100644
--- a/redisinsight/ui/src/utils/monitorUtils.ts
+++ b/redisinsight/ui/src/utils/monitorUtils.ts
@@ -1,4 +1,7 @@
import { format } from 'date-fns'
+import { isFinite } from 'lodash'
-export const getFormatTime = (time: string = '') =>
- format(new Date(+time * 1_000), 'HH:mm:ss.SSS')
+export const getFormatTime = (time: string) =>
+ (typeof time === 'string' && isFinite(+time)
+ ? format(new Date(+time * 1_000), 'HH:mm:ss.SSS')
+ : 'Invalid time')
diff --git a/redisinsight/ui/src/utils/tests/monitorUtils.spec.ts b/redisinsight/ui/src/utils/tests/monitorUtils.spec.ts
index f4d26baecf..5512f8074e 100644
--- a/redisinsight/ui/src/utils/tests/monitorUtils.spec.ts
+++ b/redisinsight/ui/src/utils/tests/monitorUtils.spec.ts
@@ -1,16 +1,23 @@
import { getFormatTime } from '../monitorUtils'
const getOutputForFormatTime: any[] = [
- ['1641450853.668074', '09:34:13.668'],
- ['1641450854.612083', '09:34:14.612'],
- ['1641450856.616102', '09:34:16.616'],
- ['1641450858.616121', '09:34:18.616'],
+ [undefined, 'Invalid time'],
+ [null, 'Invalid time'],
+ [{}, 'Invalid time'],
+ ['oeuoeu', 'Invalid time'],
+ [1, 'Invalid time'],
+ [11641450853, 'Invalid time'],
+ ['1641450853.668074[0', 'Invalid time'],
+ ['1641450853.668074', ':34:13.668'],
+ ['1641450854.612083', ':34:14.612'],
+ ['1641450856.616102', ':34:16.616'],
+ ['1641450858.616121', ':34:18.616'],
]
-describe.skip('formatToText', () => {
+describe('formatToText', () => {
it.each(getOutputForFormatTime)('for input: %s (reply), should be output: %s',
(reply, expected) => {
const result = getFormatTime(reply)
- expect(result).toBe(expected)
+ expect(result).toContain(expected)
})
})