public static DevQuizDbContext EnsureDb(this DevQuizDbContext context)
        {
            context.Database.EnsureDeleted();
            context.Database.EnsureCreated();

            return(context);
        }
        public DevQuizContextSeedDataHelper()
        {
            ContextOptions = new DbContextOptionsBuilder <DevQuizDbContext>()
                             .UseSqlite(CreateInMemoryDatabase())
                             .Options;

            _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection;

            using var context = new DevQuizDbContext(ContextOptions);
            context.EnsureDb();
        }
Example #3
0
        public async Task UserRepository_UpdateUser()
        {
            //Arrange
            //create context
            await using var devQuizContext = new DevQuizDbContext(this.ContextOptions);
            //Create several entities
            await devQuizContext.SeedUsers(3)
            .CommitAsync();

            //create user repo instance
            var userRepository = new UserRepository <User, Guid>(devQuizContext);

            //prepare user entity
            var userToAdd = new User
            {
                FirstName = "FirstName",
                LastName  = "LastName",
                UserName  = "******"
            };

            var createResult = await userRepository.CreateAsync(userToAdd);

            await userRepository.UnitOfWork.SaveChangesAsync();

            var findUserAfterSave = await userRepository.GetOneAsync(createResult.Id);

            findUserAfterSave.FirstName = "UpdatetFirstName";
            findUserAfterSave.LastName  = "UpdatetLastName";
            findUserAfterSave.UserName  = "******";

            //Act
            var updatedUser = userRepository.Update(findUserAfterSave);
            var saveResult  = await userRepository.UnitOfWork.SaveChangesAsync();

            var findUserAfterUpdate = await userRepository.GetOneAsync(findUserAfterSave.Id);

            //Assert
            Assert.NotNull(updatedUser);
            Assert.Equal(findUserAfterSave.UserName, findUserAfterUpdate.UserName);
            Assert.Equal(findUserAfterSave.FirstName, findUserAfterUpdate.FirstName);
            Assert.Equal(findUserAfterSave.LastName, findUserAfterUpdate.LastName);
            Assert.Equal(findUserAfterSave.Id, findUserAfterUpdate.Id);
            Assert.Equal(DateTime.Now.Date, findUserAfterUpdate.CreatedTime.Date);
            Assert.Equal(DateTime.Now.Date, findUserAfterUpdate.CreatedTime.Date);
        }
        public static DevQuizDbContext SeedUsers(this DevQuizDbContext context, int usersCount)
        {
            var usersDbSet = context.Users;

            for (var i = 1; i <= usersCount; i++)
            {
                var tempUserId     = Guid.NewGuid();
                var tempUserEntity = new User
                {
                    Id          = tempUserId,
                    UserName    = $"UserName_{tempUserId}",
                    FirstName   = $"FirstName_{tempUserId}",
                    LastName    = $"LastName_{tempUserId}",
                    CreatedTime = DateTime.Now,
                    UpdatedTime = DateTime.Now
                };
                usersDbSet.Add(tempUserEntity);
            }

            return(context);
        }
Example #5
0
        public async Task UserRepository_DeleteUser_NullAfterDeleteSuccess_ThrowDbUpdateConcurrencyExceptionWhiteRepeatDelete()
        {
            //Arrange
            //create context
            await using var devQuizContext = new DevQuizDbContext(this.ContextOptions);
            //Create several entities
            await devQuizContext.SeedUsers(3)
            .CommitAsync();

            //create user repo instance
            var userRepository = new UserRepository <User, Guid>(devQuizContext);

            //prepare user entity
            var userToAdd = new User
            {
                FirstName = "FirstName",
                LastName  = "LastName",
                UserName  = "******"
            };

            var createResult = await userRepository.CreateAsync(userToAdd);

            await userRepository.UnitOfWork.SaveChangesAsync();

            var findUserAfterSave = await userRepository.GetOneAsync(createResult.Id);

            //Act
            userRepository.Delete(findUserAfterSave);
            await userRepository.UnitOfWork.SaveChangesAsync();

            var fingDeletedUser = await userRepository.GetOneAsync(findUserAfterSave.Id);

            userRepository.Delete(findUserAfterSave);
            await Assert.ThrowsAsync <DbUpdateConcurrencyException>(() => userRepository.UnitOfWork.SaveChangesAsync());

            //Assert
            Assert.Null(fingDeletedUser);
        }
Example #6
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="dbContext">instance of DevQuizDbContext</param>
 public QuestionRepository(DevQuizDbContext dbContext) : base(dbContext: dbContext)
 {
     _dbContext = dbContext;
 }
 public static async Task CommitAsync(this DevQuizDbContext context)
 {
     await context.SaveChangesAsync();
 }
 public static void Commit(this DevQuizDbContext context)
 {
     context.SaveChanges();
 }
Example #9
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="dbContext">DevQuizDbContext instance</param>
 /// <param name="logger">Logger instance</param>
 public UserRepository(DevQuizDbContext dbContext,
                       ILogger <UserRepository <TUser, TKey> > logger = null) : base(dbContext: dbContext)
 {
     _devQuizDbContext = dbContext;
     _logger           = logger ?? NullLogger <UserRepository <TUser, TKey> > .Instance;
 }