Skip to content

Commit

Permalink
feat: add open created pod details
Browse files Browse the repository at this point in the history
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
  • Loading branch information
vzhukovs committed Jan 19, 2024
1 parent 43cceef commit d5827bc
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 3 deletions.
56 changes: 55 additions & 1 deletion packages/renderer/src/lib/pod/DeployPodToKube.spec.ts
Expand Up @@ -25,6 +25,7 @@ import { test, expect, vi, beforeEach, afterEach } from 'vitest';
import { render, screen, fireEvent, waitFor } from '@testing-library/svelte';
import DeployPodToKube from './DeployPodToKube.svelte';
import * as jsYaml from 'js-yaml';
import { router } from 'tinro';

const generatePodmanKubeMock = vi.fn();
const kubernetesGetCurrentContextNameMock = vi.fn();
Expand All @@ -37,6 +38,17 @@ const kubernetesCreateIngressMock = vi.fn();
const kubernetesCreateServiceMock = vi.fn();
const kubernetesIsAPIGroupSupported = vi.fn();
const listSimpleContainersByLabelMock = vi.fn();
const kubernetesReadNamespacedPodMock = vi.fn();
const queryCommandSupportedMock = vi.fn();

// mock the router
vi.mock('tinro', () => {
return {
router: {
goto: vi.fn(),
},
};
});

beforeEach(() => {
Object.defineProperty(window, 'generatePodmanKube', {
Expand All @@ -48,7 +60,9 @@ beforeEach(() => {
Object.defineProperty(window, 'kubernetesGetCurrentNamespace', {
value: kubernetesGetCurrentNamespaceMock,
});

Object.defineProperty(window, 'kubernetesReadNamespacedPod', {
value: kubernetesReadNamespacedPodMock,
});
Object.defineProperty(window, 'kubernetesListNamespaces', {
value: kubernetesListNamespacesMock,
});
Expand All @@ -73,6 +87,9 @@ beforeEach(() => {
Object.defineProperty(window, 'listSimpleContainersByLabel', {
value: listSimpleContainersByLabelMock,
});
Object.defineProperty(document, 'queryCommandSupported', {
value: queryCommandSupportedMock,
});

// podYaml with volumes
const podYaml = {
Expand Down Expand Up @@ -325,3 +342,40 @@ test('Fail to deploy ingress if service is not selected', async () => {
// Expect kubernetesCreateIngress to not be called since we error out as service wasn't selected
await waitFor(() => expect(kubernetesCreateIngressMock).not.toHaveBeenCalled());
});

test('Should display Open pod button after successful deployment', async () => {
await waitFor(() => kubernetesGetCurrentContextNameMock.mockResolvedValue('default'));
await waitRender({});
const createButton = screen.getByRole('button', { name: 'Deploy' });
expect(createButton).toBeInTheDocument();
expect(createButton).toBeEnabled();

await waitFor(() =>
kubernetesCreatePodMock.mockResolvedValue({
metadata: { name: 'hello', namespace: 'default' },
}),
);
await waitFor(() =>
kubernetesReadNamespacedPodMock.mockResolvedValue({
metadata: { name: 'hello' },
status: {
phase: 'Running',
},
}),
);

vi.useFakeTimers();
await fireEvent.click(createButton);
await vi.runAllTimersAsync();

const doneButton = screen.getByRole('button', { name: 'Done' });
expect(doneButton).toBeInTheDocument();
expect(doneButton).toBeEnabled();

const openPodButton = screen.getByRole('button', { name: 'Open Pod' });
expect(openPodButton).toBeInTheDocument();
expect(openPodButton).toBeEnabled();

await fireEvent.click(openPodButton);
expect(router.goto).toHaveBeenCalledWith(`/pods/kubernetes/hello/default/logs`);
});
14 changes: 12 additions & 2 deletions packages/renderer/src/lib/pod/DeployPodToKube.svelte
Expand Up @@ -11,6 +11,7 @@ import { ensureRestrictedSecurityContext } from '/@/lib/pod/pod-utils';
import Button from '../ui/Button.svelte';
import { faExternalLink, faRocket } from '@fortawesome/free-solid-svg-icons';
import Link from '../ui/Link.svelte';
import { router } from 'tinro';
export let resourceId: string;
export let engineId: string;
Expand Down Expand Up @@ -136,6 +137,13 @@ function goBackToHistory(): void {
window.history.go(-1);
}
function openPodDetails(): void {
if (!createdPod?.metadata?.name || !defaultContextName) {
return;
}
router.goto(`/pods/kubernetes/${encodeURI(createdPod.metadata.name)}/${encodeURI(defaultContextName)}/logs`);
}
function openRoute(route: V1Route) {
window.openExternal(`http://${route.spec.host}`);
}
Expand Down Expand Up @@ -585,8 +593,10 @@ function updateKubeResult() {
{/if}

{#if deployFinished}
<div class="pt-4">
<Button on:click="{() => goBackToHistory()}" class="w-full">Done</Button>
<div class="pt-4 flex flex-row space-x-2 justify-end">
<Button on:click="{() => goBackToHistory()}">Done</Button>
<Button on:click="{() => openPodDetails()}" disabled="{!createdPod?.metadata?.name || !defaultContextName}"
>Open Pod</Button>
</div>
{/if}
</div>
Expand Down

0 comments on commit d5827bc

Please sign in to comment.