Files
print-calculator/frontend/src/server-routing.spec.ts
Joe Küng b317196217
All checks were successful
Build and Deploy / test-backend (push) Successful in 40s
Build and Deploy / test-frontend (push) Successful in 1m5s
Build and Deploy / build-and-push (push) Successful in 1m19s
Build and Deploy / deploy (push) Successful in 22s
fix(front-end): redirect
2026-03-22 22:41:12 +01:00

48 lines
1.9 KiB
TypeScript

import { resolvePublicRedirectTarget } from './server-routing';
describe('server routing redirects', () => {
it('does not handle the root path because it is resolved separately', () => {
expect(resolvePublicRedirectTarget('/')).toBeNull();
});
it('redirects unprefixed public pages to the default language', () => {
expect(resolvePublicRedirectTarget('/about')).toBe('/it/about');
expect(resolvePublicRedirectTarget('/about/')).toBe('/it/about');
});
it('redirects calculator paths directly to the canonical basic route', () => {
expect(resolvePublicRedirectTarget('/calculator')).toBe(
'/it/calculator/basic',
);
expect(resolvePublicRedirectTarget('/it/calculator')).toBe(
'/it/calculator/basic',
);
});
it('redirects legacy shop product aliases to the canonical product route', () => {
expect(
resolvePublicRedirectTarget('/shop/accessories/desk-cable-clip'),
).toBe('/it/shop/p/desk-cable-clip');
expect(
resolvePublicRedirectTarget('/de/shop/zubehor/schreibtisch-kabelhalter'),
).toBe('/de/shop/p/schreibtisch-kabelhalter');
});
it('drops unsupported language-like prefixes instead of nesting them', () => {
expect(resolvePublicRedirectTarget('/es/about')).toBe('/it/about');
expect(resolvePublicRedirectTarget('/de-CH/about')).toBe('/it/about');
});
it('normalizes supported language prefixes and trailing slashes', () => {
expect(resolvePublicRedirectTarget('/DE/about')).toBe('/de/about');
expect(resolvePublicRedirectTarget('/it/about/')).toBe('/it/about');
expect(resolvePublicRedirectTarget('/fr')).toBeNull();
});
it('does not redirect static files and sitemap resources', () => {
expect(resolvePublicRedirectTarget('/assets/logo.svg')).toBeNull();
expect(resolvePublicRedirectTarget('/robots.txt')).toBeNull();
expect(resolvePublicRedirectTarget('/sitemap.xml')).toBeNull();
});
});