public async Task Delete_UsePrimaryKey_Valid(CompositeUserEntity entity)
        {
            // Arrange
            var insertedEntity = _repository.Insert(entity);

            // Act
            var deleted = await _repository.DeleteAsync(new CompositeUserPrimaryKeyEntity { Username = entity.Username, Password = entity.Password });

            // Assert
            Assert.Equal(entity.Username, deleted?.Username);
            Assert.Equal(entity.Password, deleted?.Password);
            Assert.Equal(insertedEntity.DateCreated, deleted?.DateCreated);
        }
        public void Get_UsePrimaryKey_Valid(CompositeUserEntity entity)
        {
            // Arrange
            var insertedEntity = _repository.Insert(entity);

            // Act
            var gotten = _repository.Get(new CompositeUserPrimaryKeyEntity {
                Username = entity.Username, Password = entity.Password
            });

            // Assert
            Assert.Equal(entity.Username, gotten?.Username);
            Assert.Equal(entity.Password, gotten?.Password);
            Assert.Equal(insertedEntity.DateCreated, gotten?.DateCreated);

            _repository.Delete(insertedEntity);
        }
        public void Update_ColumnHasMissingSetter_ColumnIsExcluded(CompositeUserEntity entity)
        {
            // Act
            var insertedEntity = _repository.Insert(entity);

            // Assert
            try
            {
                Assert.Equal(entity.Username, insertedEntity.Username);
                Assert.Equal(entity.Password, insertedEntity.Password);
                Assert.True(insertedEntity.DateCreated > DateTime.UtcNow.AddHours(-1));
            }
            finally
            {
                _repository.Delete(entity);
            }
        }
        public void Insert_RelyOnDefaultConstraint_Valid(CompositeUserEntity entity)
        {
            // Act
            var insertedEntity = _repository.Insert(entity);

            // Assert
            try
            {
                Assert.Equal(entity.Username, insertedEntity.Username);
                Assert.Equal(entity.Password, insertedEntity.Password);
                Assert.True(insertedEntity.DateCreated > DateTime.UtcNow.AddHours(-1));
            }
            finally
            {
                _repository.Delete(entity);
            }
        }
        public void Update_UsePrimaryKey_Valid(CompositeUserEntity entity)
        {
            // Arrange
            var insertedEntity = _repository.Insert(entity);

            // Act
            var updated = _repository.Update(insertedEntity with {
                Age = 42
            });

            // Assert
            Assert.Equal(entity.Username, updated?.Username);
            Assert.Equal(entity.Password, updated?.Password);
            Assert.NotEqual(42, insertedEntity.Age);
            Assert.Equal(42, updated?.Age);
            Assert.Equal(insertedEntity.DateCreated, updated?.DateCreated);

            _repository.Delete(insertedEntity);
        }