public async void ShouldCreateNewPackage() { var newPackage = new CarePackage(); _carePackageGatewayMock .Setup(g => g.GetServiceUserActivePackagesCount(UserConstants.DefaultApiUserGuid, PackageType.NursingCare, null)) .ReturnsAsync(0); _carePackageGatewayMock .Setup(g => g.Create(It.IsAny <CarePackage>())) .Callback <CarePackage>(package => newPackage = package); var assignment = new CarePlanAssignmentDomain { HackneyUserId = 1, BrokerId = Guid.NewGuid(), PackageType = PackageType.NursingCare, Notes = "Hello world", CarePlanFile = null, CarePlanFileId = Guid.NewGuid(), }; await _useCase.ExecuteAsync(assignment); newPackage.BrokerId.Should().Be(assignment.BrokerId); newPackage.PackageType.Should().Be(assignment.PackageType); newPackage.ServiceUserId.Should().Be(UserConstants.DefaultApiUserGuid); newPackage.Status.Should().Be(PackageStatus.New); newPackage.Histories.Count.Should().Be(1); newPackage.Histories.First().Status.Should().Be(HistoryStatus.NewPackage); newPackage.Histories.First().Description.Should().Be(HistoryStatus.NewPackage.GetDisplayName()); newPackage.Histories.First().RequestMoreInformation.Should().Be(assignment.Notes); _dbManagerMock.Verify(mock => mock.SaveAsync(It.IsAny <string>()), Times.Once); }
public async Task <Guid> ExecuteAsync(CarePlanAssignmentDomain carePlanAssignment) { var serviceUser = await _getServiceUserUseCase.GetServiceUserInformation(carePlanAssignment.HackneyUserId); await _ensureSingleActivePackageTypePerUserUseCase.ExecuteAsync(serviceUser.Id, carePlanAssignment.PackageType); var documentResponse = new DocumentResponse(); if (carePlanAssignment.CarePlanFileId == Guid.Empty && carePlanAssignment.CarePlanFile != null) { documentResponse = await _fileStorage.SaveFileAsync(ConvertCarePlan(carePlanAssignment.CarePlanFile), carePlanAssignment.CarePlanFile?.FileName); } var package = new CarePackage { ServiceUserId = serviceUser.Id, BrokerId = carePlanAssignment.BrokerId, PackageType = carePlanAssignment.PackageType, Status = PackageStatus.New, DateAssigned = DateTimeOffset.UtcNow, PackageScheduling = PackageScheduling.Temporary, // TODO: Review if package scheduling can be made nullable }; if (documentResponse.FileId != Guid.Empty) { package.Resources.Add(new CarePackageResource() { FileId = documentResponse.FileId, FileExtension = Path.GetExtension(documentResponse.FileName), Name = documentResponse.FileName, Type = PackageResourceType.CarePlanFile, }); } package.Histories.Add(new CarePackageHistory { Status = HistoryStatus.NewPackage, Description = HistoryStatus.NewPackage.GetDisplayName(), RequestMoreInformation = carePlanAssignment.Notes }); _carePackageGateway.Create(package); await _dbManager.SaveAsync(); return(package.Id); }
public void ShouldFailWhenUserHaveActivePackageOfSameType() { _carePackageGatewayMock .Setup(g => g.GetServiceUserActivePackagesCount(UserConstants.DefaultApiUserGuid, PackageType.NursingCare, null)) .ReturnsAsync(1); var assignment = new CarePlanAssignmentDomain { HackneyUserId = 1, BrokerId = Guid.NewGuid(), PackageType = PackageType.NursingCare }; _useCase .Invoking(useCase => useCase.ExecuteAsync(assignment)) .Should().Throw <ApiException>() .Where(ex => ex.StatusCode == StatusCodes.Status500InternalServerError); _dbManagerMock.Verify(mock => mock.SaveAsync(It.IsAny <string>()), Times.Never); }
public static CarePlanAssignmentRequest ToRequest(this CarePlanAssignmentDomain input) { return(_mapper.Map <CarePlanAssignmentRequest>(input)); }