diff --git a/frontend/__tests__/mockData/mockSnapshotData.ts b/frontend/__tests__/mockData/mockSnapshotData.ts index 39fe8bf1b7..7425bb08fa 100644 --- a/frontend/__tests__/mockData/mockSnapshotData.ts +++ b/frontend/__tests__/mockData/mockSnapshotData.ts @@ -10,6 +10,7 @@ export const mockSnapshotDetailsData = { errorMessage: '', newReleases: [ { + id: 'release-1', name: 'v0.9.2', publishedAt: '2024-12-13T14:43:46+00:00', tagName: 'v0.9.2', @@ -24,6 +25,7 @@ export const mockSnapshotDetailsData = { }, }, { + id: 'release-2', name: 'Latest pre-release', publishedAt: '2024-12-13T13:17:30+00:00', tagName: 'pre-release', diff --git a/frontend/__tests__/unit/components/Footer.test.tsx b/frontend/__tests__/unit/components/Footer.test.tsx index 6a9bd10f01..e28c1fc80b 100644 --- a/frontend/__tests__/unit/components/Footer.test.tsx +++ b/frontend/__tests__/unit/components/Footer.test.tsx @@ -46,6 +46,7 @@ jest.mock('utils/constants', () => ({ links: [ { text: 'About', href: '/about' }, { text: 'Contribute', href: 'https://github.com/OWASP/Nest/blob/main/CONTRIBUTING.md' }, + { text: 'Empty Href Link', href: '' }, // Empty href to test fallback ], }, { @@ -71,9 +72,18 @@ jest.mock('utils/constants', () => ({ ], })) -jest.mock('utils/env.client', () => ({ +let mockEnv = { ENVIRONMENT: 'production', RELEASE_VERSION: '1.2.3', +} + +jest.mock('utils/env.client', () => ({ + get ENVIRONMENT() { + return mockEnv.ENVIRONMENT + }, + get RELEASE_VERSION() { + return mockEnv.RELEASE_VERSION + }, })) import { FaGithub, FaSlack } from 'react-icons/fa6' @@ -93,6 +103,10 @@ describe('Footer', () => { beforeEach(() => { jest.clearAllMocks() + mockEnv = { + ENVIRONMENT: 'production', + RELEASE_VERSION: '1.2.3', + } }) afterEach(() => { @@ -132,10 +146,12 @@ describe('Footer', () => { } } } + for (const link of regularLinks) { const linkElement = screen.getByRole('link', { name: link.text }) expect(linkElement).toBeInTheDocument() - expect(linkElement).toHaveAttribute('href', link.href) + const expectedHref = link.href || '/' + expect(linkElement).toHaveAttribute('href', expectedHref) expect(linkElement).toHaveAttribute('target', '_blank') } @@ -266,63 +282,29 @@ describe('Footer', () => { expect(versionLink).toHaveAttribute('rel', 'noopener noreferrer') }) - test('handles span elements correctly', () => { - renderFooter() - - const spanText = screen.getByText('Plain Text') - expect(spanText.tagName).toBe('SPAN') - expect(spanText).toHaveClass('text-slate-600', 'dark:text-slate-400') - }) - }) - - describe('Version Link Behavior', () => { - let originalEnvironment: string - let originalReleaseVersion: string - let envModule: typeof import('utils/env.client') - - beforeEach(() => { - jest.clearAllMocks() - envModule = jest.requireMock('utils/env.client') - originalEnvironment = envModule.ENVIRONMENT - originalReleaseVersion = envModule.RELEASE_VERSION - }) - - afterEach(() => { - if (envModule) { - envModule.ENVIRONMENT = originalEnvironment - envModule.RELEASE_VERSION = originalReleaseVersion - } - }) - - test('renders version as commit link in staging environment', () => { - envModule.ENVIRONMENT = 'staging' - envModule.RELEASE_VERSION = '24.2.10-12c25c5' + test('renders version as commit link in non-production environment', () => { + mockEnv.ENVIRONMENT = 'staging' + mockEnv.RELEASE_VERSION = '24.2.10-12c25c5' - const { container } = render(