Skip to content

Commit 64020c0

Browse files
authored
feat: add MAC organization into discoveries view (#5917)
1 parent 628445d commit 64020c0

3 files changed

Lines changed: 51 additions & 2 deletions

File tree

src/app/networkDiscovery/components/DiscoveriesTable/DiscoveriesTable.test.tsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,48 @@ describe("DiscoveriesTable", () => {
6464
).toBeInTheDocument();
6565
});
6666
});
67+
68+
it("displays MAC address with organization", async () => {
69+
const mockDiscovery = discovery({
70+
id: 1,
71+
mac_address: "aa:bb:cc:dd:ee:ff",
72+
mac_organization: "Intel Corporate",
73+
});
74+
mockServer.use(
75+
networkDiscoveryResolvers.listNetworkDiscoveries.handler({
76+
items: [mockDiscovery],
77+
total: 1,
78+
})
79+
);
80+
81+
renderWithProviders(<DiscoveriesTable />);
82+
83+
await waitFor(() => {
84+
expect(screen.getByText("aa:bb:cc:dd:ee:ff")).toBeInTheDocument();
85+
expect(screen.getByText("Intel Corporate")).toBeInTheDocument();
86+
});
87+
});
88+
89+
it("displays 'Unknown' when MAC organization is not available", async () => {
90+
const mockDiscovery = discovery({
91+
id: 1,
92+
mac_address: "aa:bb:cc:dd:ee:ff",
93+
mac_organization: undefined,
94+
});
95+
mockServer.use(
96+
networkDiscoveryResolvers.listNetworkDiscoveries.handler({
97+
items: [mockDiscovery],
98+
total: 1,
99+
})
100+
);
101+
102+
renderWithProviders(<DiscoveriesTable />);
103+
104+
await waitFor(() => {
105+
expect(screen.getByText("aa:bb:cc:dd:ee:ff")).toBeInTheDocument();
106+
expect(screen.getByText("Unknown")).toBeInTheDocument();
107+
});
108+
});
67109
});
68110

69111
describe("actions", () => {

src/app/networkDiscovery/components/DiscoveriesTable/useDiscoveriesTableColumns/useDiscoveriesTableColumns.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { ContextualMenu } from "@canonical/react-components";
44
import type { ColumnDef } from "@tanstack/react-table";
55

66
import type { DiscoveryResponse } from "@/app/apiclient";
7+
import DoubleRow from "@/app/base/components/DoubleRow/DoubleRow";
78
import MacAddressDisplay from "@/app/base/components/MacAddressDisplay";
89
import TooltipButton from "@/app/base/components/TooltipButton";
910
import { useSidePanel } from "@/app/base/side-panel-context";
@@ -55,10 +56,15 @@ const useDiscoveriesTableColumns = (): DiscoveryColumnDef[] => {
5556
header: "Mac Address",
5657
cell: ({
5758
row: {
58-
original: { mac_address },
59+
original: { mac_address, mac_organization },
5960
},
6061
}) => {
61-
return <MacAddressDisplay>{mac_address}</MacAddressDisplay>;
62+
return (
63+
<DoubleRow
64+
primary={<MacAddressDisplay>{mac_address}</MacAddressDisplay>}
65+
secondary={mac_organization || "Unknown"}
66+
/>
67+
);
6268
},
6369
},
6470
{

src/testing/factories/discovery.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const discovery = extend<Model, DiscoveryResponse>(model, {
1616
is_external_dhcp: false,
1717
last_seen: () => timestamp("Wed, 08 Jul. 2020 05:35:4"),
1818
mac_address: "00:00:00:00:00:00",
19+
mac_organization: "Unknown Vendor",
1920
mdns_id: 2,
2021
neighbour_id: 3,
2122
observer_hostname: "observer-hostname",

0 commit comments

Comments
 (0)