public void Creating_Achievement_PersistsAcvm()
        {
            // Arrange
            var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
            var command           = new CreateAchievementCommand("Test", 1, 3);

            // Act
            var newAchievement = commandDispatcher.Send(command);

            // Assert
            Assert.That(newAchievement != null, Is.True);
        }
        public async Task CompletingAchievement_CompletesAchievement()
        {
            // Arrange
            var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
            var createCommand     = new CreateAchievementCommand("Test", 1, 3);
            var newAchievement    = await commandDispatcher.Send(createCommand);

            var command = new CompleteAchievementCommand(newAchievement.AchievementId);

            // Act
            await commandDispatcher.Send(command);

            // Assert
            Assert.That(newAchievement != null, Is.True);
        }
        public async Task Creating_Achievement_ShouldCreateProjection()
        {
            using (var connection = this._testInfrastructure.OpenDatabaseConnection())
            {
                // Arrange
                var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
                var repository        = new AchievementRepository();
                var command           = new CreateAchievementCommand("Test", 1, 5);

                // Act
                var newAchievement = await commandDispatcher.Send(command);

                var projection = await repository.GetByIdAsync(connection, newAchievement.AchievementId);

                // Assert
                Assert.That(newAchievement.AchievementId, Is.Not.EqualTo(Guid.Empty));
                Assert.That(projection, Is.Not.Null);
                Assert.That(projection.AchievementId, Is.EqualTo(newAchievement.AchievementId));
                Assert.That(projection.Name, Is.EqualTo(command.Name));
            }
        }
        public async Task CompletingAchievement_ShouldCompleteProjection()
        {
            using (var connection = this._testInfrastructure.OpenDatabaseConnection())
            {
                // Arrange
                var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>();
                var repository        = new AchievementRepository();
                var command           = new CreateAchievementCommand("Test", 1, 5);
                var newAchievement    = await commandDispatcher.Send(command);

                var command2 = new CompleteAchievementCommand(newAchievement.AchievementId);

                // Act
                var completedResponse = await commandDispatcher.Send(command2);

                var projection = await repository.GetByIdAsync(connection, newAchievement.AchievementId);

                // Assert
                Assert.That(projection.CompletedOn, Is.Not.Null);
            }
        }
 public async Task <ActionResult <AchievementAdminViewModel> > Create([FromBody] CreateAchievementCommand command)
 {
     return(Ok(await Mediator.Send(command)));
 }