public void ShouldAllowSubmissionOfNonSubmittedPackages(PackageStatus packageStatus)
        {
            _package.Status = packageStatus;

            var submissionInfo = new CarePackageSubmissionDomain
            {
                ApproverId = UserConstants.DefaultApiUserGuid,
                Notes      = "Hello world"
            };

            _useCase
            .Invoking(useCase => useCase.ExecuteAsync(_package.Id, submissionInfo))
            .Should().NotThrow();

            _dbManagerMock.Verify(mock => mock.SaveAsync(It.IsAny <string>()), Times.Once);
        }
        public async Task ExecuteAsync(Guid packageId, CarePackageSubmissionDomain submissionInfo)
        {
            var package = await _carePackageGateway
                          .GetPackageAsync(packageId, PackageFields.None, true)
                          .EnsureExistsAsync($"Care package {packageId} not found");

            ValidatePackage(package);

            package.ApproverId = submissionInfo.ApproverId;
            package.Status     = PackageStatus.SubmittedForApproval;

            package.Histories.Add(new CarePackageHistory
            {
                Status                 = HistoryStatus.SubmittedForApproval,
                Description            = HistoryStatus.SubmittedForApproval.GetDisplayName(),
                RequestMoreInformation = submissionInfo.Notes
            });

            await _dbManager.SaveAsync();
        }
        public async Task ShouldUpdatePackageStatus()
        {
            var submissionInfo = new CarePackageSubmissionDomain
            {
                ApproverId = UserConstants.DefaultApiUserGuid,
                Notes      = "Hello world"
            };

            await _useCase.ExecuteAsync(_package.Id, submissionInfo);

            _package.Status.Should().Be(PackageStatus.SubmittedForApproval);
            _package.ApproverId.Should().Be(submissionInfo.ApproverId);

            _package.Histories.Should().ContainSingle(h =>
                                                      h.RequestMoreInformation == submissionInfo.Notes &&
                                                      h.Description == HistoryStatus.SubmittedForApproval.GetDisplayName() &&
                                                      h.Status == HistoryStatus.SubmittedForApproval);

            _dbManagerMock.Verify(db => db.SaveAsync(It.IsAny <string>()), Times.Once);
        }
 public static CarePackageSubmissionRequest ToRequest(this CarePackageSubmissionDomain input)
 {
     return(_mapper.Map <CarePackageSubmissionRequest>(input));
 }