63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
INITIAL_CELLS = ['print("a")', 'print("b")', 'print("c")']
|
|
|
|
def test_multiselect(prefill_notebook):
|
|
notebook = prefill_notebook(INITIAL_CELLS)
|
|
|
|
def extend_selection_by(delta):
|
|
notebook.browser.execute_script(
|
|
"Jupyter.notebook.extend_selection_by(arguments[0]);", delta)
|
|
|
|
def n_selected_cells():
|
|
return notebook.browser.execute_script(
|
|
"return Jupyter.notebook.get_selected_cells().length;")
|
|
|
|
notebook.focus_cell(0)
|
|
assert n_selected_cells() == 1
|
|
|
|
# Check that only one cell is selected according to CSS classes as well
|
|
selected_css = notebook.browser.find_elements_by_css_selector(
|
|
'.cell.jupyter-soft-selected, .cell.selected')
|
|
assert len(selected_css) == 1
|
|
|
|
# Extend the selection down one
|
|
extend_selection_by(1)
|
|
assert n_selected_cells() == 2
|
|
|
|
# Contract the selection up one
|
|
extend_selection_by(-1)
|
|
assert n_selected_cells() == 1
|
|
|
|
# Extend the selection up one
|
|
notebook.focus_cell(1)
|
|
extend_selection_by(-1)
|
|
assert n_selected_cells() == 2
|
|
|
|
# Convert selected cells to Markdown
|
|
notebook.browser.execute_script("Jupyter.notebook.cells_to_markdown();")
|
|
cell_types = notebook.browser.execute_script(
|
|
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
|
assert cell_types == ['markdown', 'markdown', 'code']
|
|
# One cell left selected after conversion
|
|
assert n_selected_cells() == 1
|
|
|
|
# Convert selected cells to raw
|
|
notebook.focus_cell(1)
|
|
extend_selection_by(1)
|
|
assert n_selected_cells() == 2
|
|
notebook.browser.execute_script("Jupyter.notebook.cells_to_raw();")
|
|
cell_types = notebook.browser.execute_script(
|
|
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
|
assert cell_types == ['markdown', 'raw', 'raw']
|
|
# One cell left selected after conversion
|
|
assert n_selected_cells() == 1
|
|
|
|
# Convert selected cells to code
|
|
notebook.focus_cell(0)
|
|
extend_selection_by(2)
|
|
assert n_selected_cells() == 3
|
|
notebook.browser.execute_script("Jupyter.notebook.cells_to_code();")
|
|
cell_types = notebook.browser.execute_script(
|
|
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
|
assert cell_types == ['code'] * 3
|
|
# One cell left selected after conversion
|
|
assert n_selected_cells() == 1
|