public void Setup() { _deskBookingRepository = new Mock <IDeskBookingRepository>(); _deskRepository = new Mock <IDeskRepository>(); _processor = new Mock <IDeskBookingRequestProcessor>(); _deskBookModel = new DeskBookModel(_processor.Object) { DeskBookingRequest = new DeskBookingRequest() }; _deskBookingResponse = new DeskBookingResponse { ResultCode = DeskBookingResultCode.Available }; _processor.Setup(x => x.BookDeskAsync(_deskBookModel.DeskBookingRequest)) .ReturnsAsync( _deskBookingResponse ); }
public async Task <DeskBookingResponse> BookDeskAsync(DeskBookingRequest request) { if (request is null) { throw new ArgumentNullException(nameof(request)); } var desks = await _deskRepository.GetAvailableDesks(request.Date); DeskBookingResponse response = Create <DeskBookingResponse>(request); if (desks.FirstOrDefault() is Desk availableDesks) { var deskBooking = Create <DeskBooking>(request); deskBooking.DeskId = availableDesks.Id; _deskBookingRepository.Save(deskBooking); response.ResultCode = DeskBookingResultCode.Available; response.DeskBookingId = deskBooking.Id; } else { response.ResultCode = DeskBookingResultCode.NotAvailable; } return(response); }