first commit
This commit is contained in:
63
myteamwallet_frontend_modern/src/app/app.routes.spec.ts
Normal file
63
myteamwallet_frontend_modern/src/app/app.routes.spec.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import { provideRouter, Router } from '@angular/router';
|
||||
import { provideHttpClient } from '@angular/common/http';
|
||||
import { provideHttpClientTesting } from '@angular/common/http/testing';
|
||||
import { routes } from './app.routes';
|
||||
import { AuthStore } from './core/auth/auth-store';
|
||||
|
||||
describe('app routing', () => {
|
||||
let router: Router;
|
||||
let authStore: AuthStore;
|
||||
|
||||
beforeEach(() => {
|
||||
localStorage.clear();
|
||||
TestBed.configureTestingModule({
|
||||
providers: [provideRouter(routes), provideHttpClient(), provideHttpClientTesting()],
|
||||
});
|
||||
router = TestBed.inject(Router);
|
||||
authStore = TestBed.inject(AuthStore);
|
||||
});
|
||||
|
||||
it('redirects the root path to login when logged out', async () => {
|
||||
await router.navigateByUrl('/');
|
||||
expect(router.url).toBe('/auth/login');
|
||||
});
|
||||
|
||||
it('redirects a protected team route to login when logged out', async () => {
|
||||
await router.navigateByUrl('/team/1/overview');
|
||||
expect(router.url).toBe('/auth/login');
|
||||
});
|
||||
|
||||
it('redirects the root path to team-select when logged in', async () => {
|
||||
authStore.setSession('token', { id: 1, email: 'a@b.de', firstName: 'A', lastName: 'B' });
|
||||
await router.navigateByUrl('/');
|
||||
expect(router.url).toBe('/team-select');
|
||||
});
|
||||
|
||||
it('redirects the bare team route to its overview child', async () => {
|
||||
authStore.setSession('token', { id: 1, email: 'a@b.de', firstName: 'A', lastName: 'B' });
|
||||
await router.navigateByUrl('/team/1');
|
||||
expect(router.url).toBe('/team/1/overview');
|
||||
});
|
||||
|
||||
it('falls back to the not-found route for unknown paths', async () => {
|
||||
await router.navigateByUrl('/does-not-exist');
|
||||
expect(router.url).toBe('/does-not-exist');
|
||||
});
|
||||
|
||||
it('allows public team routes without a session', async () => {
|
||||
await router.navigateByUrl('/t/team-a');
|
||||
expect(router.url).toBe('/t/team-a');
|
||||
});
|
||||
|
||||
it('registers public access management below the protected team shell', () => {
|
||||
const teamRoute = routes.find((route) => route.path === 'team/:id');
|
||||
expect(teamRoute?.children?.some((route) => route.path === 'more/public-access')).toBe(true);
|
||||
});
|
||||
|
||||
it('accepts the password reset URL generated by the backend', async () => {
|
||||
expect(routes.some((route) => route.path === 'password-change/:hash')).toBe(true);
|
||||
await router.navigateByUrl('/password-change/reset-hash');
|
||||
expect(router.url).toBe('/password-change/reset-hash');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user