def test_should_not_raise_if_empty_docstring():
    """
        Test do not raise if first code cell with empty docstring
    """
    first_code_cell = f'''
# Some comments
code = 'some code again'
# And comment
    '''
    docstring_wrapper = get_data_from_docstring(
        [to_notebook_code_cell(first_code_cell)])

    assert docstring_wrapper == DocstringWrapper(docstring='',
                                                 params='',
                                                 arguments=[],
                                                 arg_params='')
def test_should_extract_docstring_and_params():
    """
        Test docstring and parameters are well extracted
    """
    docstring = '''"""
:param str param_one: Param1 description
:param int param2:
:param param3: Param3 description
:param param4:
"""'''
    docstring_cell = f'''
# Some comments
{docstring}
code = 'some code again'
# And comment
    '''
    docstring_wrapper = get_data_from_docstring(
        [to_notebook_code_cell(docstring_cell)])
    expected_arguments = [{
        'name': 'param-one',
        'type': 'str',
        'help': 'Param1 description',
        'is_list': False
    }, {
        'name': 'param2',
        'type': 'int',
        'help': '',
        'is_list': False
    }, {
        'name': 'param3',
        'type': None,
        'help': 'Param3 description',
        'is_list': False
    }, {
        'name': 'param4',
        'type': None,
        'help': '',
        'is_list': False
    }]

    assert docstring_wrapper.params == 'param_one: str, param2: int, param3, param4'
    assert docstring_wrapper.docstring == docstring.strip('\n')
    assert docstring_wrapper.arguments == expected_arguments
    assert docstring_wrapper.arg_params == 'args.param_one, args.param2, args.param3, args.param4'
def test_should_not_raise_if_no_param_in_docstring():
    """
        Test do not raise if no param in docstring
    """
    docstring = '''"""
Docstring without param
"""'''
    first_code_cell = f'''
# Some comments
{docstring}
code = 'some code again'
# And comment
    '''

    docstring_wrapper = get_data_from_docstring(
        [to_notebook_code_cell(first_code_cell)])

    assert docstring_wrapper == DocstringWrapper(docstring=docstring,
                                                 params='',
                                                 arguments=[],
                                                 arg_params='')