Files
Stirling-PDF/frontend/src/core/hooks/useLogoAssets.test.ts
T
EthanHealy01andGitHub a6614e1bfb UI/allow logo selection (#4982)
# Description of Changes

- Allow switching between logos in-app using the same section in
settings

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### Translations (if applicable)

- [ ] I ran
[`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
2025-11-25 15:22:14 +00:00

58 lines
1.8 KiB
TypeScript

import { describe, expect, test } from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import { LOGO_FOLDER_BY_VARIANT } from '@app/constants/logo';
import type { LogoVariant } from '@app/services/preferencesService';
/**
* Tests that all required logo assets exist for each logo variant.
* This ensures that when useLogoAssets returns paths, those files actually exist.
*/
describe('useLogoAssets - Logo Asset Files', () => {
const publicDir = path.resolve(__dirname, '../../../public');
// All asset files that useLogoAssets references
const requiredAssets = [
'logo-tooltip.svg',
'Firstpage.png',
'favicon.ico',
'logo192.png',
'logo512.png',
'StirlingPDFLogoWhiteText.svg',
'StirlingPDFLogoBlackText.svg',
'StirlingPDFLogoGreyText.svg',
];
const logoVariants: LogoVariant[] = ['modern', 'classic'];
describe.each(logoVariants)('%s logo variant', (variant) => {
const folder = LOGO_FOLDER_BY_VARIANT[variant];
const folderPath = path.join(publicDir, folder);
test(`folder "${folder}" should exist`, () => {
expect(fs.existsSync(folderPath)).toBe(true);
});
test.each(requiredAssets)('should have %s', (assetName) => {
const assetPath = path.join(folderPath, assetName);
expect(
fs.existsSync(assetPath),
`Missing asset: ${folder}/${assetName}`
).toBe(true);
});
});
describe('manifest files', () => {
test('manifest.json should exist for modern variant', () => {
const manifestPath = path.join(publicDir, 'manifest.json');
expect(fs.existsSync(manifestPath)).toBe(true);
});
test('manifest-classic.json should exist for classic variant', () => {
const manifestPath = path.join(publicDir, 'manifest-classic.json');
expect(fs.existsSync(manifestPath)).toBe(true);
});
});
});