def METHOD_NAME(self, method, noop, expected_conversions, mock_logger):
    """ The command should update the user's enrollment. """
    user_str = ','.join([getattr(user, method) for user in self.users])
    user_ids = [u.id for u in self.users]
    # Verify users are not in honor mode yet
    assert len(CourseEnrollment.objects.filter(mode='honor', user_id__in=user_ids)) == 0
    noop = " --noop" if noop else ""
    # Hack around call_command bugs dealing with required options see:
    # https://stackoverflow.com/questions/32036562/call-command-argument-is-required
    command_args = '--course {course} --to honor --from audit --{method} {user_str}{noop}'.format(
        course=str(self.course.id),
        noop=noop,
        method=method,
        user_str=user_str
    )
    call_command('change_enrollment', *command_args.split(' '))
    # Verify correct number of users are now in honor mode
    assert len(CourseEnrollment.objects.filter(mode='honor', user_id__in=user_ids)) == expected_conversions
    mock_logger.info.assert_called_with(
        'Successfully updated %i out of %i users',
        len(self.users),
        len(self.users)
    )