Skip to content

Commit

Permalink
Merge pull request #3465 from Sheshtawy/convert-jstest-to-selenium-de…
Browse files Browse the repository at this point in the history
…letecell

Convert jstests to selenium: deletecell.js
  • Loading branch information
takluyver authored Apr 4, 2018
2 parents 2fb4716 + ce2c3a9 commit e3ee807
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 107 deletions.
107 changes: 0 additions & 107 deletions notebook/tests/notebook/deletecell.js

This file was deleted.

60 changes: 60 additions & 0 deletions notebook/tests/selenium/test_deletecell.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import os
import pytest

def cell_is_deletable(nb, index):
JS = 'return Jupyter.notebook.get_cell({}).is_deletable();'.format(index)
return nb.browser.execute_script(JS)

def delete_cell(notebook, index):
notebook.focus_cell(index)
notebook.to_command_mode
notebook.current_cell.send_keys('dd')

def test_delete_cells(notebook):
a = 'print("a")'
b = 'print("b")'
c = 'print("c")'

notebook.edit_cell(index=0, content=a)
notebook.append(b, c)
notebook.to_command_mode()

# Validate initial state
assert notebook.get_cells_contents() == [a, b, c]
for cell in range(0, 3):
assert cell_is_deletable(notebook, cell)

notebook.set_cell_metadata(0, 'deletable', 'false')
notebook.set_cell_metadata(1, 'deletable', 0
)
assert not cell_is_deletable(notebook, 0)
assert cell_is_deletable(notebook, 1)
assert cell_is_deletable(notebook, 2)

# Try to delete cell a (should not be deleted)
delete_cell(notebook, 0)
assert notebook.get_cells_contents() == [a, b, c]

# Try to delete cell b (should succeed)
delete_cell(notebook, 1)
assert notebook.get_cells_contents() == [a, c]

# Try to delete cell c (should succeed)
delete_cell(notebook, 1)
assert notebook.get_cells_contents() == [a]

# Change the deletable state of cell a
notebook.set_cell_metadata(0, 'deletable', 'true')

# Try to delete cell a (should succeed)
delete_cell(notebook, 0)
assert len(notebook.cells) == 1 # it contains an empty cell

# Make sure copied cells are deletable
notebook.edit_cell(index=0, content=a)
notebook.set_cell_metadata(0, 'deletable', 'false')
assert not cell_is_deletable(notebook, 0)
notebook.to_command_mode()
notebook.current_cell.send_keys('cv')
assert len(notebook.cells) == 2
assert cell_is_deletable(notebook, 1)
8 changes: 8 additions & 0 deletions notebook/tests/selenium/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,14 @@ def wait_for_stale_cell(self, cell):
wait = WebDriverWait(self.browser, 10)
element = wait.until(EC.staleness_of(cell))

def get_cells_contents(self):
JS = 'return Jupyter.notebook.get_cells().map(function(c) {return c.get_text();})'
return self.browser.execute_script(JS)

def set_cell_metadata(self, index, key, value):
JS = 'Jupyter.notebook.get_cell({}).metadata.{} = {}'.format(index, key, value)
return self.browser.execute_script(JS)

def edit_cell(self, cell=None, index=0, content="", render=False):
"""Set the contents of a cell to *content*, by cell object or by index
"""
Expand Down

0 comments on commit e3ee807

Please sign in to comment.