public async Task Should_Throw_NotFoundException_In_Update_User_Profile_When_User_Not_Found()
        {
            //Arrange
            Mock <IUserManagerService>  userManagerService  = new Mock <IUserManagerService>();
            Mock <IIdentityDataContext> identityDataContext = new Mock <IIdentityDataContext>();

            var message = new UpdateUserInfoCommand(
                id: 1,
                firstName: "Test2",
                lastName: "Test2"
                );

            var applicationUser = new ApplicationUser()
            {
                Email        = String.Empty,
                UserName     = String.Empty,
                FirstName    = "Test",
                LastName     = "Test",
                Id           = 1,
                PasswordHash = String.Empty
            };

            userManagerService.Setup(r => r.GetUserById(It.Is <int>(id => id == message.Id)))
            .Returns(Task.FromResult(applicationUser));

            userManagerService.Setup(r => r.UpdateProfile(It.IsAny <int>(), It.IsAny <String>(), It.IsAny <String>()))
            .Throws <NotFoundException>();

            var sut = new UpdateUserInfoCommandHandler(identityDataContext.Object, userManagerService.Object);

            //Act/Assert
            await Assert.ThrowsAsync <NotFoundException>(async() => { await sut.Handle(message, default); });
        }
        public async Task Should_Update_User_Profile()
        {
            //Arrange
            Mock <IUserManagerService>  userManagerService  = new Mock <IUserManagerService>();
            Mock <IIdentityDataContext> identityDataContext = new Mock <IIdentityDataContext>();

            var message = new UpdateUserInfoCommand(
                id: 1,
                firstName: "Test",
                lastName: "Test"
                );

            var applicationUser = new ApplicationUser()
            {
                Email        = String.Empty,
                UserName     = String.Empty,
                FirstName    = String.Empty,
                LastName     = String.Empty,
                Id           = 1,
                PasswordHash = String.Empty
            };

            userManagerService.Setup(r => r.GetUserById(It.Is <int>(id => id == message.Id)))
            .Returns(Task.FromResult(applicationUser));

            userManagerService.Setup(r => r.UpdateProfile(It.IsAny <int>(), It.IsAny <String>(), It.IsAny <String>()))
            .Returns((int id, string firstName, string lastName) =>
            {
                applicationUser.FirstName = firstName;
                applicationUser.LastName  = lastName;
                return(Task.FromResult(applicationUser));
            });


            var sut = new UpdateUserInfoCommandHandler(identityDataContext.Object, userManagerService.Object);

            //Act
            var result = await sut.Handle(message, default);

            //Assert
            result.ShouldNotBeNull();
            result.ShouldBeOfType <Unit>();
            applicationUser.FirstName.ShouldBe(message.FirstName);
            applicationUser.LastName.ShouldBe(message.LastName);
        }