public async Task ShouldUpdateAdditionalInfoDefinition()
        {
            //arrange
            var loggedUser = await RunAsUserAsync("scott101@localhost", "Pa$$w0rd!");

            var additionalInfoDefinitionToCreate = new Faker <AdditionalInfoDefinitionCreateOrEditDto>("en")
                                                   .RuleFor(a => a.Id, f => f.Random.Guid())
                                                   .RuleFor(a => a.InfoName, f => f.Lorem.Word())
                                                   .RuleFor(a => a.TypeOfField, f => TypeOfField.Text)
                                                   .Generate();

            var additionalInfoDefinitionId = await SendAsync(new CreateAdditionalInfoDefinitionCommand(additionalInfoDefinitionToCreate));

            var additionalInfoDefinitionToModify = new Faker <AdditionalInfoDefinitionCreateOrEditDto>("en")
                                                   .RuleFor(a => a.Id, f => additionalInfoDefinitionId)
                                                   .RuleFor(a => a.InfoName, f => f.Lorem.Word())
                                                   .RuleFor(a => a.TypeOfField, f => TypeOfField.Number)
                                                   .Generate();

            //act
            var command = new EditAdditionalInfoDefinitionCommand(additionalInfoDefinitionToModify);

            await SendAsync(command);

            var modifiedAdditionalInfoDefinition = await FindByGuidAsync <AdditionalInfoDefinition>(additionalInfoDefinitionId);

            //assert
            modifiedAdditionalInfoDefinition.Id.Should().Be(additionalInfoDefinitionToModify.Id);
            modifiedAdditionalInfoDefinition.InfoName.Should().Be(additionalInfoDefinitionToModify.InfoName);
            modifiedAdditionalInfoDefinition.InfoType.Should().Be("int");
            modifiedAdditionalInfoDefinition.LastModifiedBy.Should().Be(loggedUser);
            modifiedAdditionalInfoDefinition.LastModified.Should().BeCloseTo(DateTime.UtcNow, new TimeSpan(0, 0, 1));
        }
        public void ShouldNotCallHandleIfTagNotExist()
        {
            dbSetAdditionalInfoDefinition.Setup(x => x.FindAsync(id)).Returns(null);
            context.Setup(x => x.AdditionalInfoDefinitions).Returns(dbSetAdditionalInfoDefinition.Object);

            EditAdditionalInfoDefinitionCommandHandler editAdditionalInfoDefinitionCommandHandler = new EditAdditionalInfoDefinitionCommandHandler(context.Object, stringLocalizer.Object, mapper.Object);
            EditAdditionalInfoDefinitionCommand        editAdditionalInfoDefinitionCommand        = new EditAdditionalInfoDefinitionCommand(additionalInfoDefinitionDto);

            Func <Task> act = async() => await editAdditionalInfoDefinitionCommandHandler.Handle(editAdditionalInfoDefinitionCommand, new CancellationToken());

            act.Should().ThrowAsync <NotFoundException>();
        }
        public void ShouldNotCallHandleIfNotSavedChanges()
        {
            dbSetAdditionalInfoDefinition.Setup(x => x.FindAsync(id)).Returns(new ValueTask <AdditionalInfoDefinition>(Task.FromResult(additionalInfoDefinition)));
            context.Setup(x => x.AdditionalInfoDefinitions).Returns(dbSetAdditionalInfoDefinition.Object);
            context.Setup(x => x.SaveChangesAsync(It.IsAny <CancellationToken>())).Returns(Task.FromResult(0));

            EditAdditionalInfoDefinitionCommandHandler editAdditionalInfoDefinitionCommandHandler = new EditAdditionalInfoDefinitionCommandHandler(context.Object, stringLocalizer.Object, mapper.Object);
            EditAdditionalInfoDefinitionCommand        editAdditionalInfoDefinitionCommand        = new EditAdditionalInfoDefinitionCommand(additionalInfoDefinitionDto);
            Func <Task> act = async() => await editAdditionalInfoDefinitionCommandHandler.Handle(editAdditionalInfoDefinitionCommand, new CancellationToken());

            act.Should().ThrowAsync <RestException>();
        }
        public async Task ShouldCallHandle()
        {
            dbSetAdditionalInfoDefinition.Setup(x => x.FindAsync(id)).Returns(new ValueTask <AdditionalInfoDefinition>(Task.FromResult(additionalInfoDefinition)));
            context.Setup(x => x.AdditionalInfoDefinitions).Returns(dbSetAdditionalInfoDefinition.Object);
            context.Setup(x => x.SaveChangesAsync(It.IsAny <CancellationToken>())).Returns(Task.FromResult(1));

            EditAdditionalInfoDefinitionCommandHandler editAdditionalInfoDefinitionCommandHandler = new EditAdditionalInfoDefinitionCommandHandler(context.Object, stringLocalizer.Object, mapper.Object);
            EditAdditionalInfoDefinitionCommand        editAdditionalInfoDefinitionCommand        = new EditAdditionalInfoDefinitionCommand(additionalInfoDefinitionDto);

            var result = await editAdditionalInfoDefinitionCommandHandler.Handle(editAdditionalInfoDefinitionCommand, new CancellationToken());

            mapper.Verify(x => x.Map(editAdditionalInfoDefinitionCommand, additionalInfoDefinition), Times.Once);
            result.Should().Be(id);
        }