refactor: moved deployment data service to promise

This commit is contained in:
2025-02-15 18:00:02 +01:00
parent d0e2f98f63
commit 266456a95b
3 changed files with 86 additions and 14 deletions

View File

@ -1,6 +1,7 @@
import { TestBed } from '@angular/core/testing';
import {
DeploymentDataService,
RemoteDataService,
ScanDataService,
SessionDataService,
@ -13,6 +14,7 @@ import {
import { AppConfigService } from '../app-config.service';
import { ScanDataResponse } from './model/scan-data';
import { ScanUserData } from './model/scan-user-data';
import { Deployment } from './model/deployment';
describe('RemoteDataService', () => {
let service: RemoteDataService;
@ -242,4 +244,64 @@ describe('RemoteDataService', () => {
const result = await promise;
expect(result).toBe(mockResponse);
});
it('should get deployments', async () => {
const mockDeployments: Deployment[] = [
{
_id: '1',
realm_id: 'realm1',
name: 'Deployment 1',
owner_groups: ['group1'],
access_groups: ['group2'],
config_templates: ['template1'],
},
{
_id: '2',
realm_id: 'realm2',
name: 'Deployment 2',
owner_groups: ['group3'],
access_groups: ['group4'],
config_templates: ['template2'],
},
];
const deploymentService = TestBed.inject(DeploymentDataService);
const promise = deploymentService.getDeployments();
const req = httpTesting.expectOne((request) =>
request.url.includes('deployments')
);
expect(req.request.method).toBe('GET');
expect(req.request.params.keys().length).toBe(0);
req.flush(mockDeployments);
const result = await promise;
expect(result).toEqual(mockDeployments);
});
it('should get deployment by id', async () => {
const mockDeployment: Deployment = {
_id: '1',
realm_id: 'realm1',
name: 'Deployment 1',
owner_groups: ['group1'],
access_groups: ['group2'],
config_templates: ['template1'],
};
const deploymentService = TestBed.inject(DeploymentDataService);
const promise = deploymentService.getDeployment('1');
const req = httpTesting.expectOne((request) =>
request.url.includes('deployments/id')
);
expect(req.request.method).toBe('GET');
expect(req.request.params.get('deployment_id')).toBe('1');
req.flush(mockDeployment);
const result = await promise;
expect(result).toEqual(mockDeployment);
});
});

View File

@ -125,19 +125,23 @@ export class RealmDataService extends RemoteDataService {
providedIn: 'root',
})
export class DeploymentDataService extends RemoteDataService {
getDeployments() {
getDeployments(): Promise<Array<Deployment>> {
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/json; charset=utf-8');
return this.get<Array<Deployment>>('deployments', {}, headers);
return firstValueFrom(
this.get<Array<Deployment>>('deployments', {}, headers)
);
}
getDeployment(deploymentId: string) {
getDeployment(deploymentId: string): Promise<Deployment> {
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/json; charset=utf-8');
return this.get<Deployment>(
return firstValueFrom(
this.get<Deployment>(
'deployments/id',
{ deployment_id: deploymentId },
headers
)
);
}
}

View File

@ -13,13 +13,19 @@ export class DeploymentService {
if (!deployment) {
return;
}
this.deploymentDataService
.getDeployment(deployment)
.subscribe((deployment) => {
if (deployment) {
this.selectedDeployment.next(deployment);
this.update_deployment(deployment);
}
});
async update_deployment(deploymentId: string | null): Promise<void> {
if (!deploymentId) {
this.selectedDeployment.next(null);
return;
}
let deployment_info = await this.deploymentDataService.getDeployment(
deploymentId
);
this.selectedDeployment.next(deployment_info);
}
selectDeployment(deployment: Deployment | null): void {