public async Task TestGetFilesOkResult()
        {
            //Arrange
            _documentFilesController = new DocumentFilesController(TestHelper.ValidReadEventsFunc(),
                                                                   TestHelper.SaveAndPublish, GetFile, GetFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            // Act
            var actionResult = await _documentFilesController.GetFilesAsync(Guid.Empty);

            // Assert
            var okResult = actionResult as OkObjectResult;
            var files    = okResult?.Value as IEnumerable <File>;

            Assert.NotNull(okResult);
            Assert.NotNull(files);
            Assert.Single(files);
        }
        public async Task TestGetFileNotFoundResult()
        {
            //Arrange
            var fileId      = Guid.NewGuid();
            var getFileById =
                new DocumentRepository.GetFile((_, _) => Task.FromResult(Option <FileDatabaseDto> .None));

            _documentFilesController = new DocumentFilesController(TestHelper.ValidReadEventsFunc(),
                                                                   TestHelper.SaveAndPublish, getFileById, GetFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            // Act
            var actionResult = await _documentFilesController.GetFileAsync(Guid.Empty, fileId);

            // Assert
            var notFoundResult = actionResult as NotFoundResult;

            Assert.NotNull(notFoundResult);
        }
        public async Task TestGetFileOkResult()
        {
            //Arrange
            var fileId = Guid.NewGuid();

            _documentFilesController = new DocumentFilesController(TestHelper.ValidReadEventsFunc(),
                                                                   TestHelper.SaveAndPublish, GetFile, GetFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            // Act
            var actionResult = await _documentFilesController.GetFileAsync(Guid.Empty, fileId);

            // Assert
            var okResult = actionResult as OkObjectResult;
            var file     = okResult?.Value as File;

            Assert.NotNull(okResult);
            Assert.NotNull(file);
            Assert.Equal(fileId, file.Id);
        }
        public async Task TestAddFileReadEventsErrorBadRequestResult()
        {
            //Arrange
            const string error      = "testError";
            var          documentId = Guid.NewGuid();
            var          command    = new AddFileCommand("test", "description");

            _documentFilesController = new DocumentFilesController(TestHelper.ReadEventsFuncWithError(error),
                                                                   TestHelper.SaveAndPublish, GetFile, GetFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            //Act
            var result = await _documentFilesController.AddFile(documentId, command);

            //Assert
            var badRequestResult = result as BadRequestObjectResult;

            Assert.NotNull(badRequestResult);
            Assert.NotNull(badRequestResult.Value);
        }
        public async Task TestGetFilesEmptyOkResult()
        {
            //Arrange
            var getFiles =
                new DocumentRepository.GetFiles(_ => Task.FromResult(Enumerable.Empty <FileDatabaseDto>()));

            _documentFilesController = new DocumentFilesController(TestHelper.ValidReadEventsFunc(),
                                                                   TestHelper.SaveAndPublish, GetFile, getFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            // Act
            var actionResult = await _documentFilesController.GetFilesAsync(Guid.Empty);

            // Assert
            var okResult = actionResult as OkObjectResult;
            var files    = okResult?.Value as IEnumerable <File>;

            Assert.NotNull(okResult);
            Assert.NotNull(files);
            Assert.Empty(files);
        }
        public async Task TestAddFileInvalidCommandBadRequestResult()
        {
            //Arrange
            var documentId         = Guid.NewGuid();
            var command            = new AddFileCommand(string.Empty, "test");
            var documentCreatedDto =
                new DocumentCreatedEventDto(Guid.Empty, DateTime.UtcNow, Guid.Empty, "1234", string.Empty);
            var readEventsFunc = TestHelper.ValidReadEventsFunc(documentCreatedDto.ToEvent());

            _documentFilesController = new DocumentFilesController(readEventsFunc, TestHelper.SaveAndPublish, GetFile,
                                                                   GetFiles, TestHelper.GetCurrentUserId(), TestHelper.GetDocumentById());

            //Act
            var result = await _documentFilesController.AddFile(documentId, command);

            //Assert
            var badRequestResult = result as BadRequestObjectResult;

            Assert.NotNull(badRequestResult);
            Assert.NotNull(badRequestResult.Value);
        }