public async void Create_MainLangNotSpecified_Error(
            [Frozen] Mock<ISignInManager> signInManager,
            [Frozen] Mock<IUserManager> userManager,
            [NoAutoProperties] UserController target)
        {
            var request = new CreateUserViewModel
            {
                MainLanguage = Guid.Empty,
                TrainingLanguage = Guid.NewGuid()
            };

            userManager
                .Setup(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>()))
                .Throws(new Exception());

            var actual = await target.Create(request);
            actual.Should().BeOfType<BadRequestObjectResult>();

            signInManager.Verify(x => x.SignInAsync(It.IsAny<User>()), Times.Never);
        }
        public async void Create_AdditionalLanguageSameAsMain_Error(
            [Frozen] Mock<ISignInManager> signInManager,
            [Frozen] Mock<IUserManager> userManager,
            [NoAutoProperties] UserController target)
        {
            var mainLang = Guid.NewGuid();
            var request = new CreateUserViewModel
            {
                MainLanguage = mainLang,
                TrainingLanguage = Guid.NewGuid(),
                AdditionalLanguages = new List<Guid>
                {
                    mainLang,
                    Guid.NewGuid()
                }
            };

            var actual = await target.Create(request);

            actual.Should().BeOfType<BadRequestObjectResult>();

            userManager.Verify(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>()), Times.Never);
            signInManager.Verify(x => x.SignInAsync(It.IsAny<User>()), Times.Never);
        }
        public async void Create_AllIsOk_Ok(
            [Frozen] Mock<ISignInManager> signInManager,
            [Frozen] Mock<IUserManager> userManager,
            [Frozen] Mock<ILanguageRepository> languageRepository,
            [NoAutoProperties] UserController target)
        {
            var request = new CreateUserViewModel
            {
                MainLanguage = Guid.NewGuid(),
                TrainingLanguage = Guid.NewGuid(),
                Password = "******",
                Email = "test"
            };

            languageRepository.Setup(x => x.Get(request.MainLanguage)).Returns(new Language());
            languageRepository.Setup(x => x.Get(request.TrainingLanguage)).Returns(new Language());
            userManager.Setup(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>()))
                .ReturnsAsync(IdentityResult.Success);

            var actual = await target.Create(request);

            actual.Should().BeOfType<CreatedResult>();
            var createdResult = actual as CreatedResult;
            createdResult.Location.Should().StartWith("/api/user/");

            userManager.Verify(x => x.CreateAsync(It.Is<User>(u => u.Email == request.Email), request.Password), Times.Once);
            signInManager.Verify(x => x.SignInAsync(It.Is<User>(u => u.Email == request.Email)), Times.Once);
        }
        public async void Create_UserManagerIsNotSuccess_Error(
            [Frozen] Mock<ISignInManager> signInManager,
            [Frozen] Mock<IUserManager> userManager,
            [Frozen] Mock<ILanguageRepository> languageRepository,
            [NoAutoProperties] UserController target)
        {
            var request = new CreateUserViewModel
            {
                MainLanguage = Guid.NewGuid(),
                TrainingLanguage = Guid.NewGuid()
            };

            languageRepository.Setup(x => x.Get(request.MainLanguage)).Returns(new Language());
            languageRepository.Setup(x => x.Get(request.TrainingLanguage)).Returns(new Language());
            userManager.Setup(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>()))
                .ReturnsAsync(IdentityResult.Failed(new IdentityError()));

            var actual = await target.Create(request);

            actual.Should().BeOfType<BadRequestObjectResult>();

            userManager.Verify(x => x.CreateAsync(It.IsAny<User>(), It.IsAny<string>()), Times.Once);
            signInManager.Verify(x => x.SignInAsync(It.IsAny<User>()), Times.Never);
        }