Skip to content

Commit

Permalink
Add test coverage and factories
Browse files Browse the repository at this point in the history
  • Loading branch information
mjac0bs committed Dec 13, 2024
1 parent 0ec7415 commit b2ab4fb
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 0 deletions.
15 changes: 15 additions & 0 deletions packages/manager/src/factories/kubernetesCluster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import type {
KubernetesControlPlaneACLPayload,
KubernetesDashboardResponse,
KubernetesEndpointResponse,
KubernetesTieredVersion,
KubernetesVersion,
PoolNodeResponse,
} from '@linode/api-v4/lib/kubernetes/types';
Expand Down Expand Up @@ -78,6 +79,20 @@ export const kubernetesVersionFactory = Factory.Sync.makeFactory<KubernetesVersi
}
);

export const kubernetesStandardTierVersionFactory = Factory.Sync.makeFactory<KubernetesTieredVersion>(
{
id: '1.31',
tier: 'standard',
}
);

export const kubernetesEnterpriseTierVersionFactory = Factory.Sync.makeFactory<KubernetesTieredVersion>(
{
id: 'v1.31.1+lke1',
tier: 'enterprise',
}
);

export const kubernetesControlPlaneACLOptionsFactory = Factory.Sync.makeFactory<ControlPlaneACLOptions>(
{
addresses: {
Expand Down
121 changes: 121 additions & 0 deletions packages/manager/src/features/Kubernetes/kubeUtils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,32 @@ import {
linodeTypeFactory,
nodePoolFactory,
} from 'src/factories';
import {
kubernetesEnterpriseTierVersionFactory,
kubernetesVersionFactory,
} from 'src/factories';
import { extendType } from 'src/utilities/extendType';

import {
getLatestVersion,
getTotalClusterMemoryCPUAndStorage,
useAPLAvailability,
useIsLkeEnterpriseEnabled,
useLkeStandardOrEnterpriseVersions,
} from './kubeUtils';

const mockKubernetesVersions = kubernetesVersionFactory.buildList(1);
const mockKubernetesEnterpriseVersions = kubernetesEnterpriseTierVersionFactory.buildList(
1
);

const queryMocks = vi.hoisted(() => ({
useAccount: vi.fn().mockReturnValue({}),
useAccountBetaQuery: vi.fn().mockReturnValue({}),
useFlags: vi.fn().mockReturnValue({}),
useIsLkeEnterpriseEnabled: vi.fn().mockReturnValue({}),
useKubernetesTieredVersionsQuery: vi.fn().mockReturnValue({}),
useKubernetesVersionQuery: vi.fn().mockReturnValue({}),
}));

vi.mock('src/queries/account/account', () => {
Expand All @@ -45,6 +58,24 @@ vi.mock('src/hooks/useFlags', () => {
};
});

vi.mock('src/queries/kubernetes', () => {
const actual = vi.importActual('src/queries/kubernetes');
return {
...actual,
useKubernetesTieredVersionsQuery:
queryMocks.useKubernetesTieredVersionsQuery,
useKubernetesVersionQuery: queryMocks.useKubernetesVersionQuery,
};
});

vi.mock('src/hooks/useIsLkeEnterpriseEnabled', () => {
const actual = vi.importActual('src/hooks/useIsLkeEnterpriseEnabled');
return {
...actual,
useIsLkeEnterpriseEnabled: queryMocks.useIsLkeEnterpriseEnabled,
};
});

afterEach(() => {
vi.clearAllMocks();
});
Expand Down Expand Up @@ -233,3 +264,93 @@ describe('useIsLkeEnterpriseEnabled', () => {
});
});
});

describe('useLkeStandardOrEnterpriseVersions', () => {
it('returns enterprise versions for enterprise clusters when the LKE-E feature is enabled', () => {
queryMocks.useAccount.mockReturnValue({
data: {
capabilities: ['Kubernetes Enterprise'],
},
});
queryMocks.useFlags.mockReturnValue({
lkeEnterprise: {
enabled: true,
ga: true,
la: true,
},
});
queryMocks.useKubernetesTieredVersionsQuery.mockReturnValue({
data: mockKubernetesEnterpriseVersions,
error: null,
loading: false,
});
queryMocks.useKubernetesVersionQuery.mockReturnValue({
data: mockKubernetesVersions,
error: null,
loading: false,
});

const { result } = renderHook(() =>
useLkeStandardOrEnterpriseVersions('enterprise')
);

expect(result.current.versions).toEqual(mockKubernetesEnterpriseVersions);
});

it('returns standard versions for standard clusters when the LKE-E feature is enabled', () => {
queryMocks.useFlags.mockReturnValue({
lkeEnterprise: {
enabled: true,
ga: true,
la: true,
},
});
queryMocks.useKubernetesTieredVersionsQuery.mockReturnValue({
data: mockKubernetesEnterpriseVersions,
error: null,
loading: false,
});
queryMocks.useKubernetesVersionQuery.mockReturnValue({
data: mockKubernetesVersions,
error: null,
loading: false,
});

const { result } = renderHook(() =>
useLkeStandardOrEnterpriseVersions('standard')
);

expect(result.current.versions).toEqual(mockKubernetesVersions);
});

it('returns standard versions when the LKE-E feature is disabled', () => {
queryMocks.useAccount.mockReturnValue({
data: {
capabilities: ['Kubernetes Enterprise'],
},
});
queryMocks.useFlags.mockReturnValue({
lkeEnterprise: {
enabled: false,
ga: true,
la: true,
},
});
queryMocks.useKubernetesTieredVersionsQuery.mockReturnValue({
data: mockKubernetesEnterpriseVersions,
error: null,
loading: false,
});
queryMocks.useKubernetesVersionQuery.mockReturnValue({
data: mockKubernetesVersions,
error: null,
loading: false,
});

const { result } = renderHook(() =>
useLkeStandardOrEnterpriseVersions('standard')
);

expect(result.current.versions).toEqual(mockKubernetesVersions);
});
});

0 comments on commit b2ab4fb

Please sign in to comment.