public async Task UpdateConsultationResponse(Conference conference, Guid participantId, ConsultationAnswer answer) { var participant = conference.Participants.First(x => x.Id == participantId); if (!participant.LinkedParticipants.Any()) { return; } var interpreterRoom = GetRoomForParticipant(conference, participant); if (answer == ConsultationAnswer.Rejected) { await StopTrackingResponsesForInterpreterRoom(interpreterRoom.Id); } var acceptedConsultations = await _cache.GetResponses(interpreterRoom.Id); if (!acceptedConsultations.Contains(participantId)) { acceptedConsultations.Add(participantId); } await _cache.AddOrUpdateResponses(interpreterRoom.Id, acceptedConsultations); }
public async Task should_not_track_response_for_participants_not_linked() { // arrange var participant = _conference.Participants.First(x => !x.IsJudge() && !x.LinkedParticipants.Any()); // act await _sut.UpdateConsultationResponse(_conference, participant.Id, ConsultationAnswer.Accepted); // assert foreach (var room in _conference.CivilianRooms) { var acceptedResponses = await _cache.GetResponses(room.Id); acceptedResponses.Should().BeEmpty(); } }