public async Task <long> Create(DomainUser domainUser) { var user = _mapper.Map <User>(domainUser); user.Id = await GetSequenceValue(nameof(_context.Users)); await _context.Users.InsertOneAsync(user); return(user.Id); }
public async Task Update(DomainUser domainUser) { var user = _mapper.Map <User>(domainUser); var updateResult = await _context.Users.ReplaceOneAsync(u => u.Id == user.Id, user); var successfullyUpdated = updateResult.IsAcknowledged && updateResult.ModifiedCount > 0; if (!successfullyUpdated) { throw new DatabaseUpdateException(); } }
public async Task Call_Update_Successfully_ShouldNotThrowException() { // Arrange var user = new DomainUser(); var resultMock = new Mock <ReplaceOneResult>(); resultMock.Setup(r => r.IsAcknowledged).Returns(true); resultMock.Setup(r => r.ModifiedCount).Returns(1); _dbContextMock.Setup(db => db.Users.ReplaceOneAsync(It.IsAny <FilterDefinition <User> >(), It.IsAny <User>(), It.IsAny <ReplaceOptions>(), default)).ReturnsAsync(resultMock.Object); // Act & Assert await _userRepository.Update(user); }
public async Task Call_Update_When_ReplaceOneResult_DoesNotIndicateSuccess_ThrowsException(bool isAcknowledged, long modifiedCount, bool expectedResult) { // Arrange var user = new DomainUser(); var resultMock = new Mock <ReplaceOneResult>(); resultMock.Setup(r => r.IsAcknowledged).Returns(isAcknowledged); resultMock.Setup(r => r.ModifiedCount).Returns(modifiedCount); _dbContextMock.Setup(db => db.Users.ReplaceOneAsync(It.IsAny <FilterDefinition <User> >(), It.IsAny <User>(), It.IsAny <ReplaceOptions>(), default)).ReturnsAsync(resultMock.Object); // Act & Assert await Assert.ThrowsAsync <DatabaseUpdateException>(async() => await _userRepository.Update(user)); }
public async Task Call_Create_ShouldCall_CreateOnDbContext() { // Arrange var user = new DomainUser(); var autoIncrementedUserId = 1; FakeDbContextFactory.CreateMockCollection(_dbContextMock.Setup(db => db.Users)); FakeDbContextFactory.CreateMockCollection(_dbContextMock.Setup(db => db.Sequences), new[] { new Sequence { SequenceValue = 1 } }); // Act var userId = await _userRepository.Create(user); // Assert _dbContextMock.Verify(db => db.Users.InsertOneAsync(It.IsAny <User>(), It.IsAny <InsertOneOptions>(), default), Times.Once); Assert.Equal(autoIncrementedUserId, userId); }