From 51a621bf8d7394efb26d3bc2ef9d2cf249f611ec Mon Sep 17 00:00:00 2001 From: Vladyslav Zhukovskyi Date: Wed, 18 Oct 2023 16:48:46 +0300 Subject: [PATCH] feat: add open exposed url to pod details Signed-off-by: Vladyslav Zhukovskyi --- .../src/lib/container/container-utils.ts | 6 +++ .../renderer/src/lib/pod/PodActions.spec.ts | 22 +++++++-- .../renderer/src/lib/pod/PodActions.svelte | 47 ++++++++++++++++++- .../renderer/src/lib/pod/PodDetails.spec.ts | 2 + .../renderer/src/lib/pod/PodsList.spec.ts | 2 + .../src/lib/ui/DropDownMenuItems.svelte | 1 + .../renderer/src/lib/ui/DropdownMenu.svelte | 12 ++++- 7 files changed, 86 insertions(+), 6 deletions(-) diff --git a/packages/renderer/src/lib/container/container-utils.ts b/packages/renderer/src/lib/container/container-utils.ts index fa718fe57a25..a8a8f5911493 100644 --- a/packages/renderer/src/lib/container/container-utils.ts +++ b/packages/renderer/src/lib/container/container-utils.ts @@ -113,6 +113,12 @@ export class ContainerUtils { } } + getOpeningUrls(containerInfo: ContainerInfo): string[] { + return containerInfo.Ports?.filter(port => port.PublicPort) + .map(port => port.PublicPort) + .map(port => `http://localhost:${port}`); + } + getEngineId(containerInfo: ContainerInfo): string { return containerInfo.engineId; } diff --git a/packages/renderer/src/lib/pod/PodActions.spec.ts b/packages/renderer/src/lib/pod/PodActions.spec.ts index 0997acb4fc74..82d3d7614291 100644 --- a/packages/renderer/src/lib/pod/PodActions.spec.ts +++ b/packages/renderer/src/lib/pod/PodActions.spec.ts @@ -17,28 +17,44 @@ ***********************************************************************/ import '@testing-library/jest-dom/vitest'; -import { test, expect, vi, beforeEach } from 'vitest'; +import { test, expect, vi, beforeEach, afterEach } from 'vitest'; import { fireEvent, render, screen } from '@testing-library/svelte'; import PodActions from './PodActions.svelte'; import type { PodInfoUI } from './PodInfoUI'; +import type { ContainerInfo, Port } from '@podman-desktop/api'; const pod: PodInfoUI = { id: 'pod', + containers: [{ Id: 'pod' }], + status: 'RUNNING', + kind: 'podman', } as PodInfoUI; const errorCallback = vi.fn(); +const listContainersMock = vi.fn(); const getContributedMenusMock = vi.fn(); beforeEach(() => { (window as any).kubernetesDeletePod = vi.fn(); - vi.resetAllMocks(); - vi.clearAllMocks(); + (window as any).listContainers = listContainersMock; + (window as any).removePod = vi.fn(); + + listContainersMock.mockResolvedValue([ + { Id: 'pod', Ports: [{ PublicPort: 8080 } as Port] as Port[] } as ContainerInfo, + ]); (window as any).getContributedMenus = getContributedMenusMock; getContributedMenusMock.mockImplementation(() => Promise.resolve([])); }); +afterEach(() => { + vi.resetAllMocks(); + vi.clearAllMocks(); +}); + test('Expect no error deleting pod', async () => { + listContainersMock.mockResolvedValue([]); + render(PodActions, { pod, errorCallback }); // click on delete button diff --git a/packages/renderer/src/lib/pod/PodActions.svelte b/packages/renderer/src/lib/pod/PodActions.svelte index 5eecd1396a5c..826401e9e21c 100644 --- a/packages/renderer/src/lib/pod/PodActions.svelte +++ b/packages/renderer/src/lib/pod/PodActions.svelte @@ -1,5 +1,13 @@
diff --git a/packages/renderer/src/lib/ui/DropdownMenu.svelte b/packages/renderer/src/lib/ui/DropdownMenu.svelte index 8338b4539f71..f89fa77291f2 100644 --- a/packages/renderer/src/lib/ui/DropdownMenu.svelte +++ b/packages/renderer/src/lib/ui/DropdownMenu.svelte @@ -1,8 +1,13 @@