In the same manner that we refactor the objects,we have now to refactor the service that is called by the WebAPI. Yes,we have the skinny controllers concept – but the service is something new for the application. Think about retrieving the list of the meetings – this is something that we did not need in the console application( it was just the current meeting)
So how to test ? The easy way is to put the service ( with the dependencies) in a new project – bingo-cards-api-objects. Then reference the project from bingo-cards-api nestjs webAPI – and ensure it works. Now it is the time for tests:
describe("Meetings API service creation",() => { it("a meeting should have been created properly ",async () => { const ms: MeetingService =new MeetingService(); const userName:string = "Andrei"; const meetingName:string = "Meeting today" const m:Meeting =await ms.create(userName,meetingName); expect(m.Name).toBe(meetingName); expect(m.Participants.length).toBe(1); expect(m.Participants[0].Name).toBe(userName); }); it("a meeting should have been retrieved properly ",async () => { const ms: MeetingService =new MeetingService(); const userName:string = "Andrei"; const meetingName:string = "Meeting today" const m :Meeting=await ms.create(userName,meetingName); const retr :ActualMeeting[]= ms.ActualMeetings(); expect(retr.length).toBe(1); expect(retr[0].idMeeting).toBe(m.Id); expect(retr[0].participantName).toBe(userName); }); });
And that is not all. As the code for checkCard look,it should be more tests….
public checkCard(idMeeting: any,idCard: number,nameParticipant: string ): Meeting{ const m = this.meetings.find(it => it.Id === idMeeting ); // TODO: throw if meeting is null const c = m.FindCard(idCard); // TODO: throw if card is null const p = m.FindParticipantAfterName(nameParticipant); // TODO: throw if participant is null m.CheckCardByParticipant(c,p); return m; }
Not that I have time for this…
Leave a Reply