Пример #1
0
        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);
        }
Пример #3
0
        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));
 }