public async void ApplicantDetailsByIdShouldReturnProperType()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var userRepository     = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var questionRepository = new EfDeletableEntityRepository <QuestionAnswer>(new ApplicationDbContext(options.Options));

            var administartorService = new AdministartorService(userRepository, questionRepository);

            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly);

            var questionAnswer = new List <QuestionAnswer> {
                new QuestionAnswer(),
            };
            var user = new ApplicationUser
            {
                Email            = "*****@*****.**",
                PhoneNumber      = "0882312311",
                QuestionsAnswers = questionAnswer,
            };

            await userRepository.AddAsync(user);

            await userRepository.SaveChangesAsync();

            var userFromService = administartorService.ApplicantDetailsById <ApplicantViewModel>(user.Id);

            Assert.IsType <ApplicantViewModel>(userFromService);
        }
        public async void AddDogsitterAsyncShouldBindDogsitterToUser()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var userRepository     = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var questionRepository = new EfDeletableEntityRepository <QuestionAnswer>(new ApplicationDbContext(options.Options));

            var administartorService = new AdministartorService(userRepository, questionRepository);

            var user = new ApplicationUser();
            await userRepository.AddAsync(user);

            await userRepository.SaveChangesAsync();

            await administartorService.AddDogsitterAsync(user.Id);

            Assert.IsType <Dogsitter>(user.Dogsitter);
        }
        public async void RemoveQuestionsAnswersFromUserAsyncShouldRemoveDataAccordingly()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var userRepository     = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options));
            var questionRepository = new EfDeletableEntityRepository <QuestionAnswer>(new ApplicationDbContext(options.Options));

            var administartorService = new AdministartorService(userRepository, questionRepository);


            var user = new ApplicationUser();

            var questionAnswer = new List <QuestionAnswer>
            {
                new QuestionAnswer {
                    UserId = user.Id
                },
                new QuestionAnswer {
                    UserId = user.Id
                },
                new QuestionAnswer {
                    UserId = user.Id
                },
                new QuestionAnswer {
                    UserId = user.Id
                },
            };

            foreach (var qa in questionAnswer)
            {
                await questionRepository.AddAsync(qa);
            }

            await questionRepository.SaveChangesAsync();

            await administartorService.RemoveQuestionsAnswersFromUserAsync(user.Id);

            Assert.Empty(questionRepository.AllAsNoTracking());
        }