Skip to content

Commit dea256d

Browse files
authored
Merge pull request #1056
* fix(35003): add bridger status container * fix(35003): add bridger status container * test(35003): add tests * test(35003): fix tests * test(35003): fix typo
1 parent fcfc69e commit dea256d

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

hivemq-edge-frontend/src/modules/Bridges/components/BridgeEditorDrawer.spec.cy.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ describe('BridgeEditorDrawer', () => {
105105
cy.get('[role="dialog"]#chakra-modal-bridge-editor').within(() => {
106106
cy.get('header').should('have.text', 'Create a new bridge configuration')
107107

108-
cy_bridgeShouldBeDefinedProperly
108+
cy_bridgeShouldBeDefinedProperly()
109109
})
110110
})
111111
})
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { MOCK_BRIDGE_ID } from '@/__test-utils__/mocks.ts'
2+
import { mockBridgeConnectionStatus } from '@/api/hooks/useConnection/__handlers__'
3+
import { BridgeStatusContainer } from '@/modules/Bridges/components/BridgeStatusContainer.tsx'
4+
5+
describe('BridgeStatusContainer', () => {
6+
beforeEach(() => {
7+
cy.viewport(800, 900)
8+
cy.intercept('api/v1/management/bridges/status', { items: [mockBridgeConnectionStatus] }).as('getStatus')
9+
})
10+
11+
it('should render properly an existing bridge', () => {
12+
cy.mountWithProviders(<BridgeStatusContainer id={MOCK_BRIDGE_ID} />)
13+
14+
cy.wait('@getStatus')
15+
cy.getByTestId('connection-status').should('have.text', 'Connected')
16+
})
17+
18+
it('should render even with fetch error', () => {
19+
cy.intercept('/api/v1/management/bridges/status', { statusCode: 404 }).as('getStatus')
20+
cy.mountWithProviders(<BridgeStatusContainer id={MOCK_BRIDGE_ID} />)
21+
22+
cy.wait('@getStatus')
23+
cy.getByTestId('connection-status').should('have.text', 'Unknown')
24+
})
25+
26+
it('should render unknown if not a bridge', () => {
27+
cy.mountWithProviders(<BridgeStatusContainer id="not-a-bridge" />)
28+
29+
cy.wait('@getStatus')
30+
cy.getByTestId('connection-status').should('have.text', 'Unknown')
31+
})
32+
})
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { FC } from 'react'
2+
import { ConnectionStatusBadge } from '@/components/ConnectionStatusBadge'
3+
import { useGetBridgesStatus } from '@/api/hooks/useConnection/useGetBridgesStatus.ts'
4+
5+
export const BridgeStatusContainer: FC<{ id: string }> = ({ id }) => {
6+
const { data: connections } = useGetBridgesStatus()
7+
8+
const connection = connections?.items?.find((status) => status.id === id)
9+
10+
return <ConnectionStatusBadge status={connection} />
11+
}

hivemq-edge-frontend/src/modules/Bridges/components/BridgeTable.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { ColumnDef } from '@tanstack/react-table'
55
import { Badge, Box, Skeleton, useDisclosure } from '@chakra-ui/react'
66
import { useNavigate } from 'react-router-dom'
77

8-
import type { ApiError, Bridge, BridgeSubscription, LocalBridgeSubscription, Status } from '@/api/__generated__'
8+
import type { ApiError, Bridge, BridgeSubscription, LocalBridgeSubscription } from '@/api/__generated__'
99
import { useListBridges } from '@/api/hooks/useGetBridges/useListBridges.ts'
1010
import { mockBridge } from '@/api/hooks/useGetBridges/__handlers__'
1111
import { useDeleteBridge } from '@/api/hooks/useGetBridges/useDeleteBridge.ts'
@@ -14,13 +14,13 @@ import type { ProblemDetails } from '@/api/types/http-problem-details.ts'
1414
import { useEdgeToast } from '@/hooks/useEdgeToast/useEdgeToast.tsx'
1515

1616
import DateTimeRenderer from '@/components/DateTime/DateTimeRenderer.tsx'
17-
import { ConnectionStatusBadge } from '@/components/ConnectionStatusBadge'
1817
import ErrorMessage from '@/components/ErrorMessage.tsx'
1918
import PaginatedTable from '@/components/PaginatedTable/PaginatedTable.tsx'
2019
import ConfirmationDialog from '@/components/Modal/ConfirmationDialog.tsx'
2120
import { BridgeActionMenu } from '@/modules/Bridges/components/BridgeActionMenu.tsx'
2221
import useWorkspaceStore from '@/modules/Workspace/hooks/useWorkspaceStore.ts'
2322
import { NodeTypes } from '@/modules/Workspace/types.ts'
23+
import { BridgeStatusContainer } from '@/modules/Bridges/components/BridgeStatusContainer.tsx'
2424

2525
export const BridgeTable: FC = () => {
2626
const { t } = useTranslation()
@@ -84,10 +84,9 @@ export const BridgeTable: FC = () => {
8484
accessorKey: 'status',
8585
header: t('bridge.listing.column.status'),
8686
cell: (info) => {
87-
const val = info.getValue<Status>()
8887
return (
8988
<Skeleton isLoaded={!isLoading}>
90-
<ConnectionStatusBadge status={val} />
89+
<BridgeStatusContainer id={info.row.original.id} />
9190
</Skeleton>
9291
)
9392
},

0 commit comments

Comments
 (0)