Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import React from 'react'
import { instance, mock } from 'ts-mockito'
import { RedisDefaultModules, DATABASE_LIST_MODULES_TEXT } from 'uiSrc/slices/interfaces'
import { fireEvent, render, act } from 'uiSrc/utils/test-utils'
import { RedisModuleDto } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'
import DatabaseListModules, { Props } from './DatabaseListModules'

const mockedProps = mock<Props>()

const modulesMock: RedisModuleDto[] = [
const modulesMock: AdditionalRedisModule[] = [
{ name: RedisDefaultModules.AI },
{ name: RedisDefaultModules.Bloom },
{ name: RedisDefaultModules.Gears },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ import RedisTimeSeriesLight from 'uiSrc/assets/img/modules/RedisTimeSeriesLight.
import RedisTimeSeriesDark from 'uiSrc/assets/img/modules/RedisTimeSeriesDark.svg'
import UnknownLight from 'uiSrc/assets/img/modules/UnknownLight.svg'
import UnknownDark from 'uiSrc/assets/img/modules/UnknownDark.svg'
import { RedisModuleDto } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'

import styles from './styles.module.scss'

export interface Props {
content?: JSX.Element
modules: RedisModuleDto[]
modules: AdditionalRedisModule[]
inCircle?: boolean
dark?: boolean
highlight?: boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import RediStackLightMin from 'uiSrc/assets/img/modules/redistack/RediStackLight
import RediStackLightLogo from 'uiSrc/assets/img/modules/redistack/RedisStackLogoLight.svg'
import RediStackDarkLogo from 'uiSrc/assets/img/modules/redistack/RedisStackLogoDark.svg'

import { RedisModuleDto } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'
import { getResolutionLimits } from './utils/resolutionHelper'
import { IMetric } from './components/OverviewMetrics'
import DatabaseListModules from '../database-list-modules/DatabaseListModules'
Expand All @@ -23,7 +23,7 @@ import styles from './styles.module.scss'
interface Props {
windowDimensions: number
metrics?: Array<IMetric>
modules?: Array<RedisModuleDto>
modules?: Array<AdditionalRedisModule>
isRediStack?: boolean
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import parse from 'html-react-parser'
import { DATABASE_LIST_MODULES_TEXT } from 'uiSrc/slices/interfaces'

import { getModule, truncateText } from 'uiSrc/utils'
import { RedisModuleDto } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'

import { IMetric } from '../OverviewMetrics'

Expand All @@ -16,7 +16,7 @@ const ModulesInfoText = 'More information about Redis modules can be found <a cl

interface IProps {
metrics: Array<IMetric>,
modules: Array<RedisModuleDto>
modules: Array<AdditionalRedisModule>
}

const MoreInfoPopover = ({ metrics, modules }: IProps) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import { cloneDeep } from 'lodash'
import React from 'react'
import MockedSocket from 'socket.io-mock'
import socketIO from 'socket.io-client'
import { NotificationsDto } from 'apiSrc/modules/notification/dto'
import { NotificationEvent } from 'uiSrc/constants/notifications'
import { setNewNotificationReceived, setLastReceivedNotification } from 'uiSrc/slices/app/notifications'
import { setIsConnected } from 'uiSrc/slices/app/socket-connection'
import { NotificationType } from 'uiSrc/slices/interfaces'
import { cleanup, mockedStore, render } from 'uiSrc/utils/test-utils'
import { SocketEvent } from 'uiSrc/constants'
import { NotificationsDto } from 'apiSrc/modules/notification/dto'

import CommonAppSubscription from './CommonAppSubscription'

Expand Down
21 changes: 21 additions & 0 deletions redisinsight/ui/src/components/json-viewer/JSONViewer.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from 'react'
import { render, screen } from 'uiSrc/utils/test-utils'

import JSONViewer from './JSONViewer'

describe('JSONViewer', () => {
it('should render proper json', () => {
const jsx = JSONViewer({ value: JSON.stringify({}) })
render(jsx.value as React.ReactElement)

expect(jsx.isValid).toBeTruthy()
expect(screen.queryByTestId('value-as-json')).toBeInTheDocument()
})

it('should not render invalid json', () => {
const jsx = JSONViewer({ value: 'zxc' })

expect(jsx.value).toEqual('zxc')
expect(jsx.isValid).toBeFalsy()
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const JSONViewer = (props: Props) => {

return {
value: (
<div className={cx(styles.jsonViewer, { [styles.collapsed]: !expanded })} data-tesid="value-as-json">
<div className={cx(styles.jsonViewer, { [styles.collapsed]: !expanded })} data-testid="value-as-json">
<JSONPretty json={value} space={space} />
</div>
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { cloneDeep } from 'lodash'
import React from 'react'
import { cleanup, mockedStore, render } from 'uiSrc/utils/test-utils'
import { cleanup, mockedStore, render, fireEvent, screen } from 'uiSrc/utils/test-utils'
import EncryptionErrorContent from './EncryptionErrorContent'

let store: typeof mockedStore
Expand All @@ -22,4 +22,12 @@ describe('EncryptionErrorContent', () => {
it('should render', () => {
expect(render(<EncryptionErrorContent />)).toBeTruthy()
})

it('should call onClose', () => {
const onClose = jest.fn()
render(<EncryptionErrorContent onClose={onClose} />)
fireEvent.click(screen.getByTestId('toast-action-btn'))

expect(onClose).toBeCalled()
})
})
2 changes: 1 addition & 1 deletion redisinsight/ui/src/electron/utils/ipcCheckUpdates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { omit } from 'lodash'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import { setElectronInfo, setReleaseNotesViewed } from 'uiSrc/slices/app/info'
import { addMessageNotification } from 'uiSrc/slices/app/notifications'
import { GetServerInfoResponse } from 'apiSrc/dto/server.dto'
import successMessages from 'uiSrc/components/notifications/success-messages'
import { GetServerInfoResponse } from 'apiSrc/modules/server/dto/server.dto'
import { ElectronStorageItem, IpcEvent } from '../constants'

export const ipcCheckUpdates = async (serverInfo: GetServerInfoResponse, dispatch: Dispatch<any>) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { DatabaseInstanceResponse } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { rest, RestHandler } from 'msw'
import { ClusterDetails, HealthStatus, NodeRole } from 'apiSrc/modules/cluster-monitor/models'
import { ApiEndpoints } from 'uiSrc/constants'
import { getUrl } from 'uiSrc/utils'
import { getMswURL } from 'uiSrc/utils/test-utils'
import { ClusterDetails, HealthStatus, NodeRole } from 'apiSrc/modules/cluster-monitor/models'
import { Database as DatabaseInstanceResponse } from 'apiSrc/modules/database/models/database'

export const INSTANCE_ID_MOCK = 'instanceId'

Expand Down
2 changes: 1 addition & 1 deletion redisinsight/ui/src/mocks/handlers/app/infoHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DatabaseInstanceResponse } from 'apiSrc/modules/instances/dto/database-instance.dto'
import { rest, RestHandler } from 'msw'
import { ApiEndpoints } from 'uiSrc/constants'
import { getMswURL } from 'uiSrc/utils/test-utils'
import { Database as DatabaseInstanceResponse } from 'apiSrc/modules/database/models/database'

export const APP_INFO_DATA_MOCK = {
id: 'id1',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import {
import {
addHashKey, addKeyStateSelector,
} from 'uiSrc/slices/browser/keys'
import { CreateHashWithExpireDto } from 'apiSrc/modules/browser/dto/hash.dto'
import {
IHashFieldState,
INITIAL_HASH_FIELD_STATE
Expand All @@ -23,6 +22,7 @@ import AddItemsActions from 'uiSrc/pages/browser/components/add-items-actions/Ad

import styles from 'uiSrc/pages/browser/components/key-details-add-items/styles.module.scss'
import { Maybe, stringToBuffer } from 'uiSrc/utils'
import { CreateHashWithExpireDto } from 'apiSrc/modules/browser/dto/hash.dto'
import {
AddHashFormConfig as config
} from '../constants/fields-config'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ import { Maybe, stringToBuffer, validateScoreNumber } from 'uiSrc/utils'
import { isNaNConvertedString } from 'uiSrc/utils/numbers'
import { addZsetKey, addKeyStateSelector } from 'uiSrc/slices/browser/keys'

import { CreateZSetWithExpireDto } from 'apiSrc/modules/browser/dto/z-set.dto'

import AddItemsActions from 'uiSrc/pages/browser/components/add-items-actions/AddItemsActions'
import styles from 'uiSrc/pages/browser/components/key-details-add-items/styles.module.scss'
import { CreateZSetWithExpireDto } from 'apiSrc/modules/browser/dto/z-set.dto'
import AddKeyFooter from '../AddKeyFooter/AddKeyFooter'
import { AddZsetFormConfig as config } from '../constants/fields-config'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import {
resetUpdateValue,
addHashFieldsAction,
} from 'uiSrc/slices/browser/hash'
import { AddFieldsToHashDto } from 'apiSrc/modules/browser/dto/hash.dto'
import { KeyTypes } from 'uiSrc/constants'
import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import AddItemsActions from 'uiSrc/pages/browser/components/add-items-actions/AddItemsActions'

import { stringToBuffer } from 'uiSrc/utils'
import { AddFieldsToHashDto } from 'apiSrc/modules/browser/dto/hash.dto'
import styles from '../styles.module.scss'

export interface Props {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react'
import { mock } from 'ts-mockito'
import { render, screen } from 'uiSrc/utils/test-utils'

import AddStreamEntries, { Props } from './AddStreamEntries'

const mockedProps = mock<Props>()

describe('AddStreamEntries', () => {
it('should render', () => {
expect(render(<AddStreamEntries {...mockedProps} />)).toBeTruthy()
})
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react'
import { mock } from 'ts-mockito'
import { render, screen } from 'uiSrc/utils/test-utils'

import StreamEntryFields, { Props } from './StreamEntryFields'

const mockedProps = mock<Props>()

describe('StreamEntryFields', () => {
it('should render', () => {
expect(render(<StreamEntryFields {...mockedProps} fields={[]} />)).toBeTruthy()
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import { lastDeliveredIDTooltipText } from 'uiSrc/constants/texts'
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
import { addNewGroupAction } from 'uiSrc/slices/browser/stream'
import { consumerGroupIdRegex, stringToBuffer, validateConsumerGroupId } from 'uiSrc/utils'
import { CreateConsumerGroupsDto } from 'apiSrc/modules/browser/dto/stream.dto'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import { CreateConsumerGroupsDto } from 'apiSrc/modules/browser/dto/stream.dto'

import styles from './styles.module.scss'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import VirtualTable from 'uiSrc/components/virtual-table'
import PopoverDelete from 'uiSrc/pages/browser/components/popover-delete/PopoverDelete'
import { getColumnWidth } from 'uiSrc/components/virtual-grid'
import { IColumnSearchState, ITableColumn } from 'uiSrc/components/virtual-table/interfaces'
import { GetSetMembersResponse } from 'apiSrc/modules/browser/dto/set.dto'
import { stringToBuffer } from 'uiSrc/utils/formatters/bufferFormatters'
import { GetSetMembersResponse } from 'apiSrc/modules/browser/dto/set.dto'
import styles from './styles.module.scss'

const suffix = '_set'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import {
setSelectedGroup
} from 'uiSrc/slices/browser/stream'
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
import { ConsumerGroupDto } from 'apiSrc/modules/browser/dto/stream.dto'
import { stringToBuffer } from 'uiSrc/utils'
import { ConsumerGroupDto } from 'apiSrc/modules/browser/dto/stream.dto'
import GroupsView, { Props as GroupsViewProps } from './GroupsView'
import GroupsViewWrapper, { Props } from './GroupsViewWrapper'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ import { selectedKeyDataSelector, updateSelectedKeyRefreshTime } from 'uiSrc/sli
import { ITableColumn } from 'uiSrc/components/virtual-table/interfaces'
import { getFormatTime, getNextId } from 'uiSrc/utils/streamUtils'
import { SortOrder } from 'uiSrc/constants'
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import {
AckPendingEntriesResponse,
PendingEntryDto,
ClaimPendingEntryDto,
ClaimPendingEntriesResponse
} from 'apiSrc/modules/browser/dto/stream.dto'
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'

import MessagesView from './MessagesView'
import MessageClaimPopover from './MessageClaimPopover'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import {
fetchStreamEntries,
} from 'uiSrc/slices/browser/stream'
import { StreamViewType } from 'uiSrc/slices/interfaces/stream'
import { ConsumerGroupDto } from 'apiSrc/modules/browser/dto/stream.dto'
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
import { SortOrder } from 'uiSrc/constants'
import { selectedKeyDataSelector } from 'uiSrc/slices/browser/keys'
import { ConsumerGroupDto } from 'apiSrc/modules/browser/dto/stream.dto'

import { streamViewTypeTabs } from '../constants'

Expand Down
48 changes: 48 additions & 0 deletions redisinsight/ui/src/pages/pubSub/PubSubPage.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import React from 'react'
import { sendPageViewTelemetry, TelemetryPageView } from 'uiSrc/telemetry'
import { render } from 'uiSrc/utils/test-utils'

import PubSubPage from './PubSubPage'

jest.mock('uiSrc/slices/instances/instances', () => ({
...jest.requireActual('uiSrc/slices/instances/instances'),
connectedInstanceSelector: jest.fn().mockReturnValue({
name: 'db_name',
}),
}))

jest.mock('uiSrc/telemetry', () => ({
...jest.requireActual('uiSrc/telemetry'),
sendEventTelemetry: jest.fn(),
sendPageViewTelemetry: jest.fn()
}))

jest.mock('uiSrc/slices/app/info', () => ({
...jest.requireActual('uiSrc/slices/app/info'),
appAnalyticsInfoSelector: jest.fn().mockReturnValue({
identified: true,
}),
}))

/**
* PubSubPage tests
*
* @group component
*/
describe('PubSubPage', () => {
it('should render', () => {
expect(render(<PubSubPage />)).toBeTruthy()
})

it('should call proper sendPageViewTelemetry', () => {
const sendPageViewTelemetryMock = jest.fn()
sendPageViewTelemetry.mockImplementation(() => sendPageViewTelemetryMock)

render(<PubSubPage />)

expect(sendPageViewTelemetry).toBeCalledWith({
name: TelemetryPageView.PUBSUB_PAGE,
databaseId: 'instanceId'
})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import {
} from 'uiSrc/slices/interfaces'
import { InputFieldSentinel } from 'uiSrc/components'
import { SentinelInputFieldType } from 'uiSrc/components/input-field-sentinel/InputFieldSentinel'
import { AddSentinelMasterDto } from 'apiSrc/modules/instances/dto/redis-sentinel.dto'
import { CreateSentinelDatabaseDto } from 'apiSrc/modules/redis-sentinel/dto/create.sentinel.database.dto'

import SentinelDatabases from './components'

Expand Down Expand Up @@ -68,7 +68,7 @@ const SentinelDatabasesPage = () => {

const handleAddInstances = (databases: ModifiedSentinelMaster[]) => {
const pikedDatabases = map(databases, (i) => {
const database: AddSentinelMasterDto = {
const database: CreateSentinelDatabaseDto = {
name: i.name,
alias: i.alias || i.name,
}
Expand Down
Loading