fix: align admin profile request validation
This commit is contained in:
@@ -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({});
|
||||
});
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user