test(api-client): generated BFF client is exposed and calls the endpoints (refs #66)
Scaffold libs/api-client (Nx Angular lib) and generate a typed HttpClient client from services/bff/openapi.json with orval (node-based; Angular target integrates with HttpClient interceptors for the S-08c auth token). A failing test drives the public API: it expects an injectable BffApiV1Service to POST /self-service/registrations and GET /openbaar/register (via HttpClientTesting), but the lib barrel doesn't export the client yet, so it fails. Normalise the vitest target to 'test'. Green exposes it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
50
libs/api-client/src/lib/bff-api.spec.ts
Normal file
50
libs/api-client/src/lib/bff-api.spec.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { provideHttpClient } from '@angular/common/http';
|
||||
import {
|
||||
HttpTestingController,
|
||||
provideHttpClientTesting,
|
||||
} from '@angular/common/http/testing';
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import {
|
||||
BffApiV1Service,
|
||||
type OpenbaarEntry,
|
||||
type SubmitAccepted,
|
||||
} from 'api-client';
|
||||
|
||||
describe('BffApiV1Service (generated from services/bff/openapi.json)', () => {
|
||||
let service: BffApiV1Service;
|
||||
let http: HttpTestingController;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
providers: [provideHttpClient(), provideHttpClientTesting()],
|
||||
});
|
||||
service = TestBed.inject(BffApiV1Service);
|
||||
http = TestBed.inject(HttpTestingController);
|
||||
});
|
||||
|
||||
afterEach(() => http.verify());
|
||||
|
||||
it('submits a registration via POST /self-service/registrations', () => {
|
||||
let result: SubmitAccepted | undefined;
|
||||
service.postSelfServiceRegistrations().subscribe((r) => (result = r));
|
||||
|
||||
const req = http.expectOne('/self-service/registrations');
|
||||
expect(req.request.method).toBe('POST');
|
||||
req.flush({ registrationId: 'reg-1', status: 'Ingediend' });
|
||||
|
||||
expect(result?.registrationId).toBe('reg-1');
|
||||
expect(result?.status).toBe('Ingediend');
|
||||
});
|
||||
|
||||
it('reads the openbaar register via GET /openbaar/register with the query', () => {
|
||||
let rows: OpenbaarEntry[] | undefined;
|
||||
service.getOpenbaarRegister({ q: 'abc' }).subscribe((r) => (rows = r));
|
||||
|
||||
const req = http.expectOne((r) => r.url === '/openbaar/register');
|
||||
expect(req.request.method).toBe('GET');
|
||||
expect(req.request.params.get('q')).toBe('abc');
|
||||
req.flush([{ id: 'abc-111', status: 'INGEDIEND' }]);
|
||||
|
||||
expect(rows?.[0].id).toBe('abc-111');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user