Example #1
0
        public async Task UsingTwiceSameImage_ForDifferentTasks_ReusesImage()
        {
            using (var connection = this._testInfrastructure.OpenDatabaseConnection())
            {
                // Arrange
                var commandDispatcher    = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
                var taskImagesRepository = new TaskImageRepository();
                var newTask = await this.CreateNewTask();

                var newTask2 = await this.CreateNewTask();

                var fileName = "TestImage.jpg";
                var filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestResources", fileName);

                var attachImageCommand  = new AttachFileToTaskCommand(newTask.TaskId, filePath);
                var attachImageCommand2 = new AttachFileToTaskCommand(newTask2.TaskId, filePath);

                // Act
                var resultTask1 = await commandDispatcher.Send(attachImageCommand);

                var resultTask2 = await commandDispatcher.Send(attachImageCommand2);

                // Assert
                var task1Images = await taskImagesRepository.GetImagesForTaskAsync(connection, newTask.TaskId);

                var task2Images = await taskImagesRepository.GetImagesForTaskAsync(connection, newTask2.TaskId);

                Assert.That(resultTask1.FileId, Is.EqualTo(resultTask2.FileId));
                Assert.That(task1Images.Count, Is.EqualTo(task2Images.Count));
                Assert.That(task1Images.Select(x => x.ImageId).SequenceEqual(task2Images.Select(x => x.ImageId)),
                            Is.True);
            }
        }
Example #2
0
        public async Task Handle(AttachedFileToTaskEvent notification, CancellationToken cancellationToken)
        {
            using (var connection = this._dbConnectionFactory.OpenConnection())
            {
                var fileRepository = new FileRepository();
                var file           = await fileRepository.GetByIdAsync(connection, notification.FileId);

                var taskId = notification.AggregateId;

                if (file.IsImage)
                {
                    var imageRepository      = new ImageRepository();
                    var taskImagesRepository = new TaskImageRepository();

                    await imageRepository.StoreImagesAsync(connection, file);

                    await taskImagesRepository.CreateTaskImageLinks(connection, taskId, file.FileId);
                }
                else
                {
                    var taskFileRepository = new TaskFileRepository();
                    await taskFileRepository.InsertAsync(connection, new TaskFileEntity
                    {
                        TaskFileId = this._dbConnectionFactory.GuidGenerator.GenerateGuid(),
                        TaskId     = taskId,
                        FileId     = notification.FileId
                    });
                }
            }
        }
Example #3
0
        public async Task AttachingImage_ToTask_ShouldCreateProjection()
        {
            // Arrange
            using (var connection = this._testInfrastructure.OpenDatabaseConnection())
            {
                var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
                var repository        = new TaskImageRepository();
                var newTask           = await this.CreateNewTask();

                var fileName = "TestImage.jpg";
                var filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestResources", fileName);

                var attachImageCommand = new AttachFileToTaskCommand(newTask.TaskId, filePath);
                await commandDispatcher.Send(attachImageCommand);

                // Act
                var projection = await repository.GetImagesForTaskAsync(connection, newTask.TaskId);

                // Assert
                Assert.That(newTask.TaskId, Is.Not.EqualTo(Guid.Empty));
                Assert.That(projection, Is.Not.Null);
                Assert.That(projection.Count, Is.EqualTo(3));
            }
        }