fix: align admin profile request validation

This commit is contained in:
Bastian Wagner
2026-08-01 11:20:47 +02:00
parent d962200b79
commit 431eba86e7
4 changed files with 41 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ import { TestBed } from '@angular/core/testing';
import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
import { environment } from '../../../environments/environment';
import { AdminUsersApi } from './admin-users-api';
import { AdminUserProfileRequest } from '../../models/user-directory.model';
import { UsersApi } from './users-api';
describe('UsersApi', () => {
@@ -32,6 +33,21 @@ describe('AdminUsersApi', () => {
let service: AdminUsersApi;
let httpMock: HttpTestingController;
it('accepts profile requests with omitted or string names only', () => {
const omitted: AdminUserProfileRequest = {};
const names: AdminUserProfileRequest = {
firstName: 'Ada',
lastName: 'Admin',
};
// @ts-expect-error Profile names cannot be explicitly cleared to null.
const nullName: AdminUserProfileRequest = { firstName: null };
expect(omitted).toEqual({});
expect(names).toEqual({ firstName: 'Ada', lastName: 'Admin' });
expect(nullName).toEqual({ firstName: null });
});
beforeEach(() => {
TestBed.configureTestingModule({ providers: [provideHttpClient(), provideHttpClientTesting()] });
service = TestBed.inject(AdminUsersApi);
@@ -41,10 +57,10 @@ describe('AdminUsersApi', () => {
afterEach(() => httpMock.verify());
it('uses the dedicated admin profile endpoint and payload', () => {
service.updateProfile(7, { firstName: 'Alex', lastName: null }).subscribe();
service.updateProfile(7, { firstName: 'Alex' }).subscribe();
const request = httpMock.expectOne(`${environment.apiUrl}admin/users/7/profile`);
expect(request.request.method).toBe('PATCH');
expect(request.request.body).toEqual({ firstName: 'Alex', lastName: null });
expect(request.request.body).toEqual({ firstName: 'Alex' });
request.flush({});
});

View File

@@ -48,8 +48,8 @@ export interface UserDirectoryFilters {
}
export interface AdminUserProfileRequest {
firstName?: string | null;
lastName?: string | null;
firstName?: string;
lastName?: string;
}
export type AdminUserRoleId = 1 | 2;