def test_has_children_handles_plan_index(): """ When no project is set, hasChildren should return False """ # Given model = TreeModel() project = ResearchProject("") project.add_plan().add_task() model.set_project(project) # Then assert model.hasChildren(model.index(0, 0, model.plans_index)) is True
def test_flags_not_editable_for_ancestor_column(): """ The ancestor column should not be editable """ model = TreeModel() project = ResearchProject("") project.add_plan().add_task() model.set_project(project) # When plan_index = model.index(0, TreeModelCols.ANCESTOR, model.plans_index) task_index = model.index(0, TreeModelCols.ANCESTOR, plan_index) # Then assert model.flags(plan_index) & Qt.ItemIsEditable != Qt.ItemIsEditable assert model.flags(task_index) & Qt.ItemIsEditable != Qt.ItemIsEditable
def test_delete_does_nothing_on_invalid_index(qtbot): """ Delete removes task from underlying data structure """ # Given model = TreeModel() project = ResearchProject("") project.add_plan().add_task() model.set_project(project) # When with qtbot.assertNotEmitted(model.rowsAboutToBeRemoved): with qtbot.assertNotEmitted(model.rowsRemoved): model.delete_node(QModelIndex()) # Then assert len(project.plans) == 1 assert len(project.plans[0].tasks) == 1
def test_flags_set_for_line_items(): """ Check flags are set correctly for plans and tasks """ # Given model = TreeModel() project = ResearchProject("") project.add_plan().add_task() model.set_project(project) # When plan_index = model.index(0, 0, model.plans_index) task_index = model.index(0, 0, plan_index) # Then plan_flags = int(model.flags(plan_index)) task_flags = int(model.flags(task_index)) assert plan_flags & Qt.ItemIsSelectable == Qt.ItemIsSelectable assert plan_flags & Qt.ItemIsEditable == Qt.ItemIsEditable assert plan_flags & Qt.ItemIsEnabled == Qt.ItemIsEnabled assert task_flags & Qt.ItemIsSelectable == Qt.ItemIsSelectable assert task_flags & Qt.ItemIsEditable == Qt.ItemIsEditable assert task_flags & Qt.ItemIsEnabled == Qt.ItemIsEnabled