Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }