-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23 from jorbush/policies
Add cookies and privacy policies
- Loading branch information
Showing
13 changed files
with
926 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 83 additions & 0 deletions
83
__tests__/unit_test/pages/policies/cookies/cookies.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import { describe, it, expect, vi, afterEach } from 'vitest'; | ||
import { render, cleanup } from '@testing-library/react'; | ||
import CookiesPolicy from '@/app/policies/cookies/cookies'; | ||
|
||
// Mock the next/navigation module | ||
vi.mock('next/navigation', () => ({ | ||
useRouter: () => ({ | ||
back: vi.fn(), | ||
}), | ||
})); | ||
|
||
// Mock the react-i18next module | ||
vi.mock('react-i18next', () => ({ | ||
useTranslation: () => ({ | ||
t: (key: string) => key, | ||
}), | ||
})); | ||
|
||
describe('CookiesPolicy', () => { | ||
afterEach(() => { | ||
cleanup(); | ||
}); | ||
|
||
it('renders the cookies policy content', () => { | ||
const { getByText } = render(<CookiesPolicy />); | ||
|
||
expect(getByText('cookies_policy')).toBeDefined(); | ||
expect(getByText('what_are_cookies')).toBeDefined(); | ||
expect(getByText('types_of_cookies')).toBeDefined(); | ||
expect(getByText('essential_technical_cookies')).toBeDefined(); | ||
expect(getByText('third_party_services')).toBeDefined(); | ||
expect(getByText('how_to_manage_cookies')).toBeDefined(); | ||
expect(getByText('changes_in_cookies_policy')).toBeDefined(); | ||
expect(getByText('contact')).toBeDefined(); | ||
}); | ||
|
||
it('has a back button that calls router.back()', () => { | ||
const { getByRole } = render(<CookiesPolicy />); | ||
|
||
const backButton = getByRole('button'); | ||
expect(backButton).toBeDefined(); | ||
}); | ||
|
||
it('contains links to external services', () => { | ||
const { getByText } = render(<CookiesPolicy />); | ||
|
||
expect(getByText('Google SSO')).toBeDefined(); | ||
expect(getByText('GitHub SSO')).toBeDefined(); | ||
expect(getByText('Vercel')).toBeDefined(); | ||
expect(getByText('GoDaddy')).toBeDefined(); | ||
expect(getByText('MongoDB')).toBeDefined(); | ||
expect(getByText('Cloudinary')).toBeDefined(); | ||
}); | ||
|
||
it('contains links to privacy policies', () => { | ||
const { getByText } = render(<CookiesPolicy />); | ||
|
||
expect(getByText('vercel_privacy_policy')).toBeDefined(); | ||
expect(getByText('godaddy_privacy_policy')).toBeDefined(); | ||
expect(getByText('mongodb_privacy_policy')).toBeDefined(); | ||
expect(getByText('cloudinary_privacy_policy')).toBeDefined(); | ||
}); | ||
|
||
it('contains email contact information', () => { | ||
const { getByText } = render(<CookiesPolicy />); | ||
|
||
const emailLink = getByText('jbonetv5@gmail.com'); | ||
expect(emailLink).toBeDefined(); | ||
expect(emailLink.getAttribute('href')).toBe( | ||
'mailto:jbonetv5@gmail.com' | ||
); | ||
}); | ||
|
||
it('contains a link to the privacy policy', () => { | ||
const { getByText } = render(<CookiesPolicy />); | ||
|
||
const privacyPolicyLink = getByText('privacy_policy'); | ||
expect(privacyPolicyLink).toBeDefined(); | ||
expect(privacyPolicyLink.getAttribute('href')).toBe( | ||
'/policies/privacy' | ||
); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { describe, it, expect, vi } from 'vitest'; | ||
import { render } from '@testing-library/react'; | ||
import CookiesPolicyPage from '@/app/policies/cookies/page'; | ||
|
||
// Mock the ClientOnly component | ||
vi.mock('@/app/components/ClientOnly', () => ({ | ||
default: ({ children }: { children: React.ReactNode }) => ( | ||
<div data-testid="client-only">{children}</div> | ||
), | ||
})); | ||
|
||
// Mock the CookiesPolicy component | ||
vi.mock('@/app/policies/cookies/cookies', () => ({ | ||
default: () => ( | ||
<div data-testid="cookies-policy">Mocked Cookies Policy</div> | ||
), | ||
})); | ||
|
||
describe('CookiesPolicyPage', () => { | ||
it('renders CookiesPolicy wrapped in ClientOnly', () => { | ||
const { getByTestId } = render(<CookiesPolicyPage />); | ||
|
||
const clientOnlyWrapper = getByTestId('client-only'); | ||
expect(clientOnlyWrapper).toBeDefined(); | ||
|
||
const cookiesPolicyComponent = getByTestId('cookies-policy'); | ||
expect(cookiesPolicyComponent).toBeDefined(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { describe, it, expect, vi } from 'vitest'; | ||
import { render } from '@testing-library/react'; | ||
import PrivacyPolicyPage from '@/app/policies/privacy/page'; | ||
|
||
// Mock the ClientOnly component | ||
vi.mock('@/app/components/ClientOnly', () => ({ | ||
default: ({ children }: { children: React.ReactNode }) => ( | ||
<div data-testid="client-only">{children}</div> | ||
), | ||
})); | ||
|
||
// Mock the PrivacyPolicy component | ||
vi.mock('@/app/policies/privacy/privacy', () => ({ | ||
default: () => ( | ||
<div data-testid="privacy-policy">Mocked Privacy Policy</div> | ||
), | ||
})); | ||
|
||
describe('PrivacyPolicyPage', () => { | ||
it('renders PrivacyPolicy wrapped in ClientOnly', () => { | ||
const { getByTestId } = render(<PrivacyPolicyPage />); | ||
|
||
const clientOnlyWrapper = getByTestId('client-only'); | ||
expect(clientOnlyWrapper).toBeDefined(); | ||
|
||
const privacyPolicyComponent = getByTestId('privacy-policy'); | ||
expect(privacyPolicyComponent).toBeDefined(); | ||
}); | ||
}); |
62 changes: 62 additions & 0 deletions
62
__tests__/unit_test/pages/policies/privacy/privacy.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { describe, it, expect, vi, afterEach } from 'vitest'; | ||
import { render, cleanup } from '@testing-library/react'; | ||
import PrivacyPolicy from '@/app/policies/privacy/privacy'; | ||
|
||
// Mock the next/navigation module | ||
vi.mock('next/navigation', () => ({ | ||
useRouter: () => ({ | ||
back: vi.fn(), | ||
}), | ||
})); | ||
|
||
// Mock the react-i18next module | ||
vi.mock('react-i18next', () => ({ | ||
useTranslation: () => ({ | ||
t: (key: string) => key, | ||
}), | ||
})); | ||
|
||
describe('PrivacyPolicy', () => { | ||
afterEach(() => { | ||
cleanup(); | ||
}); | ||
it('renders the privacy policy content', () => { | ||
const { getByText } = render(<PrivacyPolicy />); | ||
|
||
expect(getByText('privacy_policy')).toBeDefined(); | ||
expect(getByText('information_we_collect')).toBeDefined(); | ||
expect(getByText('how_we_use_info')).toBeDefined(); | ||
expect(getByText('sharing_info')).toBeDefined(); | ||
expect(getByText('data_security')).toBeDefined(); | ||
expect(getByText('your_rights')).toBeDefined(); | ||
expect(getByText('data_retention')).toBeDefined(); | ||
expect(getByText('policy_changes')).toBeDefined(); | ||
expect(getByText('8. contact')).toBeDefined(); | ||
}); | ||
|
||
it('has a back button that calls router.back()', () => { | ||
const { getByRole } = render(<PrivacyPolicy />); | ||
|
||
const backButton = getByRole('button'); | ||
expect(backButton).toBeDefined(); | ||
}); | ||
|
||
it('contains links to external services', () => { | ||
const { getAllByText, getByText } = render(<PrivacyPolicy />); | ||
|
||
expect(getAllByText('Cloudinary')).toBeDefined(); | ||
expect(getByText('Vercel')).toBeDefined(); | ||
expect(getByText('GoDaddy')).toBeDefined(); | ||
expect(getByText('MongoDB')).toBeDefined(); | ||
}); | ||
|
||
it('contains email contact information', () => { | ||
const { getAllByText } = render(<PrivacyPolicy />); | ||
|
||
const emailLinks = getAllByText('jbonetv5@gmail.com'); | ||
expect(emailLinks.length).toBe(2); | ||
emailLinks.forEach((link) => { | ||
expect(link.getAttribute('href')).toBe('mailto:jbonetv5@gmail.com'); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.