public async void GetLanguagesReturnsCollectionOfLanguages()
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.SingleOrDefault();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            List <LanguageJSON> expectedLanguages = new List <LanguageJSON>()
            {
                new LanguageJSON()
                {
                    Name = "english"
                }
            };

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            JsonResult result = await controller.GetLanguages();

            List <LanguageJSON> recievedLanguages = (List <LanguageJSON>)result.Value;

            Assert.Equal(expectedLanguages, recievedLanguages);
        }
        public async void GetWordsPrioritiesReturnsCollectionOnValidInput()
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.SingleOrDefault();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            List <WordPrioritiesJSON> expectedWordPriorities = new List <WordPrioritiesJSON>()
            {
                new WordPrioritiesJSON()
                {
                    Language = new LanguageJSON()
                    {
                        Name = "english"
                    },
                    Phrase = new NativePhraseJson()
                    {
                        Phrase = "риба"
                    },
                    Word = new ForeignWordJSON()
                    {
                        Word = "fish"
                    },
                    Value = 0
                },
                new WordPrioritiesJSON()
                {
                    Language = new LanguageJSON()
                    {
                        Name = "english"
                    },
                    Phrase = new NativePhraseJson()
                    {
                        Phrase = "двері"
                    },
                    Word = new ForeignWordJSON()
                    {
                        Word = "door"
                    },
                    Value = 0
                }
            };

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            JsonResult result = await controller.GetWordsPriorities(new GetWordPrioritiesModel { Language = "english", Amount = 2, Offset = 0 });

            List <WordPrioritiesJSON> recievedWordPriorities = (List <WordPrioritiesJSON>)result.Value;

            Assert.Equal(expectedWordPriorities, recievedWordPriorities);
        }
        public async void LoginReturnsAnErrorOnInValidInput(string email, string password)
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.Where(u => u.Email == email).SingleOrDefault();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            IActionResult result = await controller.Login(new LoginModel { Email = email, Password = password });

            Assert.False(result is JsonResult);
        }
        public async void GetWordsPrioritiesReturnsEmptyCollectionIfOffsetIsTooLarge(int amount, int offset)
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.SingleOrDefault();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            JsonResult result = await controller.GetWordsPriorities(new GetWordPrioritiesModel { Language = "english", Amount = amount, Offset = offset });

            Assert.False(((List <WordPrioritiesJSON>)result.Value).Any());
        }
        public async void RegisterReturnsAValidJWTTokenOnValidInput()
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.Single();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            var result = await controller.Register(new RegisterModel { Email = "*****@*****.**", Password = "******" });

            LoginRegisterResponse response = (LoginRegisterResponse)result.Value;

            Assert.NotNull(response.Token);
        }
        public async void GetTranslationsReturnsTranslationsOnValidInput()
        {
            DictionaryDBContext       dbcontextMock          = DBContextMock.GetContextMock();
            List <WordPrioritiesJSON> expectedWordPriorities = new List <WordPrioritiesJSON>()
            {
                new WordPrioritiesJSON()
                {
                    Phrase = new NativePhraseJson()
                    {
                        Phrase = "риба"
                    },
                    Word = new ForeignWordJSON()
                    {
                        Word = "fish"
                    },
                    Language = new LanguageJSON()
                    {
                        Name = "english"
                    },
                    Value = 0
                }
            };

            var               context       = new DefaultHttpContext();
            User              user          = dbcontextMock.Users.Single();
            FakeUserManager   userManager   = new FakeUserManager(user);
            FakeSignInManager signInManager = new FakeSignInManager(user, "testpwd");

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            JsonResult result = await controller.GetTranslations(new GetTranslations { Language = "english", Word = "fish" });

            List <WordPrioritiesJSON> recievedWordPriorities = (List <WordPrioritiesJSON>)result.Value;

            Assert.True(recievedWordPriorities.Count > 0);
            Assert.Equal(expectedWordPriorities, recievedWordPriorities);
        }
        public async void GetWordPrioritiesCountReturnsZeroOnWrongInput(string languageName)
        {
            DictionaryDBContext dbcontextMock = DBContextMock.GetContextMock();
            var               context         = new DefaultHttpContext();
            User              user            = dbcontextMock.Users.SingleOrDefault();
            FakeUserManager   userManager     = new FakeUserManager(user);
            FakeSignInManager signInManager   = new FakeSignInManager(user, "testpwd");

            int expectedAmount = 0;

            var controller = new JSONDataController(userManager, signInManager, dbcontextMock);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = context
            };
            JsonResult result = await controller.GetWordPrioritiesCount(new LanguageInputModel { Name = languageName });

            int recievedamount = (int)result.Value;

            Assert.Equal(expectedAmount, recievedamount);
        }