示例#1
0
        public async Task <IActionResult> ApproveAsync([FromBody] ApproveDocumentRequest model, CancellationToken token)
        {
            var command = new ApproveDocumentCommand(model.Id);
            await _commandBus.DispatchAsync(command, token);

            return(Ok());
        }
示例#2
0
        public static async Task ApproveDocument(this HttpClient httpClient, Uri documentUri,
                                                 ApproveDocumentCommand command)
        {
            var requestUri = CombineUri(documentUri, "approve");
            var content    = GetStringContent(command);

            var response = await httpClient.PutAsync(requestUri, content);

            response.EnsureSuccessStatusCode();
        }
示例#3
0
        public async Task <IActionResult> ApproveDocument(Guid id, [FromBody] ApproveDocumentCommand command)
        {
            var outcome =
                from doc in GetDocumentFromEvents(id)
                from u in ValidateDocumentUser(doc.UserId.Value)
                from result in doc.Approve(command.Comment).AsTask()
                from _ in SaveAndPublishEventAsync(result.Event)
                select result.Document;

            return(await outcome.Map(val => val.ToActionResult(_ => NoContent())));
        }
示例#4
0
        public async Task TestApproveDocumentReadEventsErrorBadRequestResult()
        {
            //Arrange
            var          command = new ApproveDocumentCommand("approve");
            const string error   = "testError";

            _documentsController = new DocumentsController(TestHelper.ReadEventsFuncWithError(error),
                                                           TestHelper.SaveAndPublish, DocumentExistsByNumber, TestHelper.GetDocumentById(), TestHelper.GetCurrentUserId());

            //Act
            var result = await _documentsController.ApproveDocument(Guid.Empty, command);

            //Assert
            var badRequestResult = result as BadRequestObjectResult;

            Assert.NotNull(badRequestResult);
            Assert.NotNull(badRequestResult.Value);
        }
示例#5
0
        public async Task TestApproveDocumentInvalidCommandBadRequestResult()
        {
            //Arrange
            var command            = new ApproveDocumentCommand(string.Empty);
            var documentCreatedDto =
                new DocumentCreatedEventDto(Guid.Empty, DateTime.UtcNow, Guid.Empty, "1234", string.Empty);
            var readEventsFunc = TestHelper.ValidReadEventsFunc(documentCreatedDto.ToEvent());

            _documentsController = new DocumentsController(readEventsFunc, TestHelper.SaveAndPublish,
                                                           DocumentExistsByNumber, TestHelper.GetDocumentById(), TestHelper.GetCurrentUserId());

            //Act
            var result = await _documentsController.ApproveDocument(Guid.Empty, command);

            //Assert
            var badRequestResult = result as BadRequestObjectResult;

            Assert.NotNull(badRequestResult);
            Assert.NotNull(badRequestResult.Value);
        }
        public async Task ApproveDocumentTest()
        {
            // Arrange
            var createDocumentCommand  = new CreateDocumentCommand(DateTime.UtcNow.Ticks.ToString(), "Test document");
            var addFileCommand         = new AddFileCommand("Test", "Test file");
            var approveDocumentCommand = new ApproveDocumentCommand("Approved");

            // Act
            var documentUri = await _client.CreateDocumentAsync(createDocumentCommand);

            await _client.AddFileAsync(documentUri, addFileCommand);

            await _client.SendDocumentForApprovalAsync(documentUri);

            await _client.ApproveDocument(documentUri, approveDocumentCommand);

            var document = await _client.GetAsync <Document>(documentUri);

            // Assert
            Assert.NotNull(document);
            Assert.Equal(DocumentStatus.Approved.ToString(), document.Status);
            Assert.Equal(approveDocumentCommand.Comment, document.ApprovalComment);
        }
示例#7
0
        public async Task TestApproveDocumentNoContentResult()
        {
            //Arrange
            var documentCreatedDto =
                new DocumentCreatedEventDto(Guid.Empty, DateTime.UtcNow, Guid.Empty, "1234", string.Empty);
            var fileAddedDto = new FileAddedEventDto(Guid.Empty, DateTime.UtcNow, Guid.Empty, "test", string.Empty);
            var documentSentToApprovalDto = new DocumentSentForApprovalEventDto(Guid.Empty, DateTime.UtcNow);

            var readEventsFunc = TestHelper.ValidReadEventsFunc(documentCreatedDto.ToEvent(), fileAddedDto.ToEvent(),
                                                                documentSentToApprovalDto.ToEvent());

            var command = new ApproveDocumentCommand("approve");

            _documentsController = new DocumentsController(readEventsFunc, TestHelper.SaveAndPublish,
                                                           DocumentExistsByNumber, TestHelper.GetDocumentById(), TestHelper.GetCurrentUserId());

            //Act
            var result = await _documentsController.ApproveDocument(Guid.Empty, command);

            //Assert
            var noContentResult = result as NoContentResult;

            Assert.NotNull(noContentResult);
        }