feat(community): add getAllMemberships() to frontend MembershipService
Add method to fetch all admin memberships via GET /api/community/admin/memberships with corresponding unit tests using Angular HttpClientTestingModule.
This commit is contained in:
parent
cab55c4abb
commit
344587486a
126
eeg_frontend/src/app/services/membership.spec.ts
Normal file
126
eeg_frontend/src/app/services/membership.spec.ts
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
import { provideHttpClient } from '@angular/common/http';
|
||||||
|
import {
|
||||||
|
HttpTestingController,
|
||||||
|
provideHttpClientTesting,
|
||||||
|
} from '@angular/common/http/testing';
|
||||||
|
import { MembershipService, PendingMembershipResponse } from './membership';
|
||||||
|
|
||||||
|
describe('MembershipService', () => {
|
||||||
|
let service: MembershipService;
|
||||||
|
let httpMock: HttpTestingController;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
providers: [provideHttpClient(), provideHttpClientTesting()],
|
||||||
|
});
|
||||||
|
service = TestBed.inject(MembershipService);
|
||||||
|
httpMock = TestBed.inject(HttpTestingController);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
httpMock.verify();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getAllMemberships', () => {
|
||||||
|
it('should return all memberships via GET /api/community/admin/memberships', () => {
|
||||||
|
const mockMemberships: PendingMembershipResponse[] = [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
userEmail: 'user1@test.at',
|
||||||
|
firstName: 'Max',
|
||||||
|
lastName: 'Mustermann',
|
||||||
|
atNumber: 'AT0000000000000000001',
|
||||||
|
communityName: 'Test EG',
|
||||||
|
priorityLevel: 1,
|
||||||
|
status: 'PENDING',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
userEmail: 'user2@test.at',
|
||||||
|
firstName: 'Anna',
|
||||||
|
lastName: 'Musterfrau',
|
||||||
|
atNumber: 'AT0000000000000000002',
|
||||||
|
communityName: 'Test EG',
|
||||||
|
priorityLevel: 2,
|
||||||
|
status: 'ACTIVE',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
service.getAllMemberships().subscribe((result) => {
|
||||||
|
expect(result).toEqual(mockMemberships);
|
||||||
|
expect(result.length).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
const req = httpMock.expectOne(
|
||||||
|
'http://localhost:8080/api/community/admin/memberships',
|
||||||
|
);
|
||||||
|
expect(req.request.method).toBe('GET');
|
||||||
|
req.flush(mockMemberships);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return an empty array when no memberships exist', () => {
|
||||||
|
service.getAllMemberships().subscribe((result) => {
|
||||||
|
expect(result).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
const req = httpMock.expectOne(
|
||||||
|
'http://localhost:8080/api/community/admin/memberships',
|
||||||
|
);
|
||||||
|
expect(req.request.method).toBe('GET');
|
||||||
|
req.flush([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include memberships with all status values', () => {
|
||||||
|
const mockMemberships: PendingMembershipResponse[] = [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
userEmail: 'a@test.at',
|
||||||
|
firstName: 'A',
|
||||||
|
lastName: 'B',
|
||||||
|
atNumber: 'AT001',
|
||||||
|
communityName: 'EG1',
|
||||||
|
priorityLevel: 1,
|
||||||
|
status: 'PENDING',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
userEmail: 'c@test.at',
|
||||||
|
firstName: 'C',
|
||||||
|
lastName: 'D',
|
||||||
|
atNumber: 'AT002',
|
||||||
|
communityName: 'EG1',
|
||||||
|
priorityLevel: 1,
|
||||||
|
status: 'ACTIVE',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
userEmail: 'e@test.at',
|
||||||
|
firstName: 'E',
|
||||||
|
lastName: 'F',
|
||||||
|
atNumber: 'AT003',
|
||||||
|
communityName: 'EG2',
|
||||||
|
priorityLevel: 1,
|
||||||
|
status: 'INACTIVE',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
service.getAllMemberships().subscribe((result) => {
|
||||||
|
expect(result.length).toBe(3);
|
||||||
|
const statuses = result.map((m) => m.status);
|
||||||
|
expect(statuses).toContain('PENDING');
|
||||||
|
expect(statuses).toContain('ACTIVE');
|
||||||
|
expect(statuses).toContain('INACTIVE');
|
||||||
|
});
|
||||||
|
|
||||||
|
const req = httpMock.expectOne(
|
||||||
|
'http://localhost:8080/api/community/admin/memberships',
|
||||||
|
);
|
||||||
|
req.flush(mockMemberships);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -60,6 +60,10 @@ export class MembershipService {
|
|||||||
return this.http.get<PendingMembershipResponse[]>(`${this.apiUrl}/admin/memberships/pending`);
|
return this.http.get<PendingMembershipResponse[]>(`${this.apiUrl}/admin/memberships/pending`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getAllMemberships(): Observable<PendingMembershipResponse[]> {
|
||||||
|
return this.http.get<PendingMembershipResponse[]>(`${this.apiUrl}/admin/memberships`);
|
||||||
|
}
|
||||||
|
|
||||||
approveMembership(id: string): Observable<void> {
|
approveMembership(id: string): Observable<void> {
|
||||||
return this.http.put<void>(`${this.apiUrl}/admin/memberships/${id}/approve`, {});
|
return this.http.put<void>(`${this.apiUrl}/admin/memberships/${id}/approve`, {});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user