def test_columnCount(self): rootnode = self.session.query(Check).filter_by(parent_id=None).one() model = GenericTreeModel(rootnode, treenode=Check) column_count = model.columnCount() self.assertEqual(column_count, 2) rootindex = model.createIndex(0, 0, rootnode) self.assertTrue(rootindex.isValid()) name = model.data(rootindex, QtCore.Qt.DisplayRole) assert name == 'RootNode'
def test_insertRow(self): rootnode = get_or_create(self.session, Check, parent_id=None, name='RootNode') model = GenericTreeModel(rootnode, treenode=Check) proxymodel = PolyMorphicFilterProxyModel() proxymodel.setSourceModel(model) index = QtCore.QModelIndex() check=CheckAbapCountTableEntries(name = 'Clients 001 and 066 removed', description = 'If client 001 is not actively used, it can be deleted. Client 066 is no longer required in any case', ) param001 = CheckAbapCountTableEntries__params( table_name = 'T000', table_fields = 'MANDT', expected_count = 0, operator = 'NE', where_clause = "MANDT EQ '001'" ) param066 = CheckAbapCountTableEntries__params( table_name = 'T000', table_fields = 'MANDT', expected_count = 0, operator = 'NE', where_clause = "MANDT EQ '066'" ) check.params.append(param001) check.params.append(param066) print('\nroot node: ') print(rootnode._dump()) print('\ncheck node: ') print(check._dump()) proxymodel.insertRow(position=0, parent=QtCore.QModelIndex(), nodeObject=check) print('\nroot node after insertRow: ') print(rootnode._dump()) #proxymodel=PolyMorphicFilterProxyModel() #proxymodel.setSourceModel(model) proxyRowcount=proxymodel.rowCount(QtCore.QModelIndex()) sourceRowcount=model.rowCount(QtCore.QModelIndex()) for count in range(proxyRowcount): index = proxymodel.index(count, 0, QtCore.QModelIndex()) sourceIndex = proxymodel.mapToSource(index) node = model.getNode(sourceIndex) print('Node {}'.format(count)) print(node._dump()) # self.assertTrue(proxymodel.hasChildren(index)) #Another test self.assertEqual(proxyRowcount, sourceRowcount)
def setupUi(self): self.setWindowIcon(QtGui.QIcon(':Checked')) self.setWindowTitle('SystemCheck') self.systemTypes_tabw = QtWidgets.QTabWidget() self.systemTypes_tabw.setContentsMargins(0, 0, 0, 0) #self.systemTypes_tabw.setStyleSheet('QTabWidget::pane { border: 0 solid white; margin: -13px -9px -13px -9px;}') self.setMinimumHeight(768) self.setMinimumWidth(1366) self.setupActions() self.generateMenu() self.setCentralWidget(self.systemTypes_tabw) self.systemTypes_tabw.setTabPosition(QtWidgets.QTabWidget.West) self.program_toolbar = QtWidgets.QToolBar() self.program_toolbar.addAction(self.quit_act) self.program_toolbar.setToolTip('SystemCheck Tool Bar') self.addToolBar(self.program_toolbar) self.system_toolbar = QtWidgets.QToolBar() self.system_toolbar.addAction(self.systemsNewFolder_act) self.system_toolbar.setToolTip('System Toolbar') self.system_toolbar.addAction(self.systemsNew_act) self.system_toolbar.addAction(self.systemsDelete_act) self.system_toolbar.addSeparator() self.system_toolbar.addAction(self.systemsExport_act) self.system_toolbar.addAction(self.systemsImport_act) self.addToolBar(self.system_toolbar) self.checks_toolbar = QtWidgets.QToolBar() self.checks_toolbar.setToolTip('Checks Toolbar') self.checks_toolbar.addAction(self.checksRun_act) self.checks_toolbar.addAction(self.checksPause_act) self.checks_toolbar.addAction(self.checksStop_act) self.checks_toolbar.addSeparator() self.checks_toolbar.addAction(self.checksExport_act) self.checks_toolbar.addAction(self.checksImport_act) self.checks_toolbar.addSeparator() self.checks_toolbar.addAction(self.checksNew_act) self.checks_toolbar.addAction(self.checksNewFolder_act) self.checks_toolbar.addAction(self.checksDelete_act) self.addToolBar(self.checks_toolbar) system_root = utils.get_or_create(SESSION, GenericSystem, parent_id=None, name='RootNode') check_root = utils.get_or_create(SESSION, Check, parent_id=None, name='RootNode') self.system_model = GenericTreeModel(system_root) self.check_model = GenericTreeModel(check_root)
def test_removeRow(self): rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) index = model.createIndex(0, 0, rootnode) check = CheckAbapCountTableEntries( name='Clients 001 and 066 removed', description= 'If client 001 is not actively used, it can be deleted. Client 066 is no longer required in any case', ) param001 = CheckAbapCountTableEntries__params( table_name='T000', table_fields='MANDT', expected_count=0, operator='NE', where_clause="MANDT EQ '001'") param066 = CheckAbapCountTableEntries__params( table_name='T000', table_fields='MANDT', expected_count=0, operator='NE', where_clause="MANDT EQ '066'") check.params.append(param001) model.insertRow(0, index, nodeObject=check) self.assertEqual(model.rowCount(index), 1) model.removeRow(0, index) self.assertEqual(model.rowCount(index), 0)
def test_removeRows(self): rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) index = model.createIndex(0, 0, rootnode) model.insertRows(0, 10, index) self.assertEqual(model.rowCount(index), 10) model.removeRows(1, 5, index) self.assertEqual(model.rowCount(index), 5)
def test_removeRow(self): rootnode = self.session.query(GenericSystemTreeNode).filter_by( parent_id=None).one() model = GenericTreeModel(rootnode, treenode=GenericSystemTreeNode) index = model.createIndex(0, 0, rootnode) model.insertRow(0, index) self.assertEqual(model.rowCount(index), 1) model.removeRow(0, index) self.assertEqual(model.rowCount(index), 0)
def test_setData(self): rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) index = model.createIndex(0, 0, rootnode) self.assertTrue(index.isValid()) name = model.data(index, QtCore.Qt.DisplayRole) self.assertEqual(name, 'RootNode') model.setData(index, 'StillRootNode') name = model.data(index, QtCore.Qt.DisplayRole) self.assertEqual(name, 'StillRootNode')
def test_removeRows(self): rootnode = get_or_create(self.session, Check, parent_id=None, name='RootNode') model = GenericTreeModel(rootnode, treenode=Check) proxymodel = PolyMorphicFilterProxyModel() proxymodel.setSourceModel(model) index = QtCore.QModelIndex() check=CheckAbapCountTableEntries(name = 'Clients 001 and 066 removed', description = 'If client 001 is not actively used, it can be deleted. Client 066 is no longer required in any case', ) param001 = CheckAbapCountTableEntries__params( table_name = 'T000', table_fields = 'MANDT', expected_count = 0, operator = 'NE', where_clause = "MANDT EQ '001'" ) param066 = CheckAbapCountTableEntries__params( table_name = 'T000', table_fields = 'MANDT', expected_count = 0, operator = 'NE', where_clause = "MANDT EQ '066'" ) check.params.append(param001) check.params.append(param066) print('\nroot node: ') print(rootnode._dump()) print('\ncheck node: ') print(check._dump()) proxymodel.insertRow(position=0, parent=QtCore.QModelIndex(), nodeObject=check) print('\nroot node after insertRow: ') print(rootnode._dump()) self.assertEqual(proxymodel.rowCount(QtCore.QModelIndex()), 1) proxymodel.removeRows(0, 1, index) self.assertEqual(proxymodel.rowCount(index), 0)
def test_getNode(self): self.populateTree() rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) index = model.index(0, 0, QtCore.QModelIndex()) node = model.getNode(index) self.assertEqual(node.name, 'Authorization') index = model.index(99, 2, QtCore.QModelIndex()) node = model.getNode(index) self.assertEqual(node.name, 'RootNode')
def test_parent(self): self.populateTree() rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) node1index = model.index(1, 0, QtCore.QModelIndex()) node2index = model.index(0, 0, node1index) self.assertEqual(model.data(node1index, QtCore.Qt.DisplayRole), 'Basis') self.assertEqual(model.data(node2index, QtCore.Qt.DisplayRole), 'Post Install') data_node1 = model.data(node1index, QtCore.Qt.DisplayRole) node1_node = node1index.internalPointer() self.assertEqual(node1_node.name, 'Basis') node2_node = node2index.internalPointer() self.assertEqual(node2_node.name, 'Post Install') node2_parent_index = model.parent(node2index) node2_parent_node = node2_parent_index.internalPointer() self.assertEqual(node2_parent_node.name, 'Basis')
def test_getNode(self): self.populateTree() rootnode = self.session.query(GenericSystemTreeNode).filter_by( parent_id=None).one() model = GenericTreeModel(rootnode, treenode=GenericSystemTreeNode) index = model.index(0, 0, QtCore.QModelIndex()) node = model.getNode(index) self.assertEqual(node.name, 'DEV') index = model.index(99, 2, QtCore.QModelIndex()) node = model.getNode(index) self.assertEqual(node.name, 'RootNode')
def test_parent(self): self.populateTree() rootnode = self.session.query(GenericSystemTreeNode).filter_by( parent_id=None).one() model = GenericTreeModel(rootnode, treenode=GenericSystemTreeNode) node1index = model.index(0, 0, QtCore.QModelIndex()) node2index = model.index(0, 0, node1index) self.assertEqual(model.data(node1index, QtCore.Qt.DisplayRole), 'DEV') self.assertEqual(model.data(node2index, QtCore.Qt.DisplayRole), 'E1D') data_node1 = model.data(node1index, QtCore.Qt.DisplayRole) node1_node = node1index.internalPointer() self.assertEqual(node1_node.name, 'DEV') node2_node = node2index.internalPointer() self.assertEqual(node2_node.name, 'E1D') node2_parent_index = model.parent(node2index) node2_parent_node = node2_parent_index.internalPointer() self.assertEqual(node2_parent_node.name, 'DEV')
def test_insertRow(self): rootnode = self.session.query(GenericSystemTreeNode).filter_by( parent_id=None).one() model = GenericTreeModel(rootnode) index = model.createIndex(0, 0, rootnode) child_count_root = model.rowCount(index) self.assertEqual(child_count_root, 0) system_node = SystemAbap(name='New SID', sid='NEW') model.insertRow(0, index, nodeObject=system_node) child_count_root = model.rowCount(index) self.assertEqual(child_count_root, 1) #Successfully added one new system self.assertTrue(model.hasChildren(index)) #Another test #Testing Inserting a new client system_index = model.index(0, 0, index) child_count_system = model.rowCount(system_index) self.assertEqual(child_count_system, 0) #No new client exists self.assertFalse(model.hasChildren(system_index)) #Another test client_node = SystemAbapClient(client='000') model.insertRow(position=0, parent=system_index, nodeObject=client_node) child_count_system = model.rowCount(system_index) self.assertEqual(child_count_system, 1) #Successfully added one new system self.assertTrue(model.hasChildren(system_index)) #Another test
def test_filterAcceptsRow(self): populateChecksTree(self.session) rootnode = self.session.query(Check).filter_by(parent_id=None).first() model = GenericTreeModel(rootnode, treenode=Check) filter_model=PolyMorphicFilterProxyModel(filterClasses=self.filter) filter_model.setSourceModel(model) rootindex=QtCore.QModelIndex() self.assertEqual(model.rowCount(rootindex), 2) self.assertEqual(filter_model.rowCount(rootindex), 2) index=model.index(1, 0, rootindex) #Folder "Basis" self.assertEqual(model.rowCount(index), 1) self.assertEqual(model.data(index, QtCore.Qt.DisplayRole), 'Basis') self.assertEqual(model.rowCount(index), 1) index=model.index(0, 0, index) self.assertEqual(model.data(index, QtCore.Qt.DisplayRole), 'Post Install') self.assertEqual(model.rowCount(index), 1) index=model.index(0, 0, index) self.assertEqual(model.data(index, QtCore.Qt.DisplayRole), 'Clients 001 and 066 removed') filter_index=filter_model.index(1, 0, rootindex) self.assertEqual(filter_model.data(filter_index, QtCore.Qt.DisplayRole), 'Basis') filter_index=filter_model.index(0, 0, filter_index) self.assertEqual(filter_model.data(filter_index, QtCore.Qt.DisplayRole), 'Post Install') self.assertEqual(filter_model.rowCount(filter_index), 0)
class TestSettingsModel(TestCase): def setUp(self): self.PATH = r'TestSettingsModel.sqlite' self.logger = logging.getLogger('{}.{}'.format( __name__, self.__class__.__name__)) self.dbconfig = { 'sqlalchemy.echo': False, 'sqlalchemy.url': 'sqlite:///' + self.PATH } if os.path.exists(self.PATH): os.remove(self.PATH) self.engine = engine_from_config(self.dbconfig) systemcheck.models.meta.base.Base.metadata.create_all(self.engine) self.session_factory = sessionmaker(bind=self.engine) self.session = scoped_session(self.session_factory) if self.session.query(GenericSystemTreeNode).filter( GenericSystemTreeNode.parent_id == None).count() == 0: self.session.add(GenericSystemTreeNode(name='RootNode')) self.session.commit() self.populate_tree() rootnode = self.session.query(GenericSystemTreeNode).filter( GenericSystemTreeNode.parent_id == None).one() self.model = GenericTreeModel(rootnode=rootnode, treenode=GenericSystemTreeNode) def tearDown(self): self.session.close() if os.path.exists(self.PATH): os.remove(self.PATH) def populate_tree(self): systemcheck_tools.populateSystemsABAPTree(self.session) def test_columnCount(self): dev_index = self.model.index(0, 0, QtCore.QModelIndex()) system_index = self.model.index(0, 0, dev_index) system_tree_node = system_index.internalPointer() self.assertEqual(system_tree_node.sid, 'E1D') settings_model = SettingsModel(system_tree_node) column_count = settings_model.columnCount() self.assertEqual(column_count, 16) self.assertEqual(column_count, system_tree_node._qt_column_count()) def test_data(self): dev_index = self.model.index(0, 0, QtCore.QModelIndex()) system_index = self.model.index(0, 0, dev_index) system_tree_node = system_index.internalPointer() self.assertEqual(system_tree_node.sid, 'E1D') settings_model = SettingsModel(system_tree_node) for colnr, column in enumerate(system_tree_node.__qtmap__): index = settings_model.index(0, colnr, QtCore.QModelIndex()) self.assertEqual(settings_model.data(index, QtCore.Qt.DisplayRole), getattr(system_tree_node, column.name))
def test_recursiveCheck(self): self.populateTree() rootnode = self.session.query(GenericSystemTreeNode).filter_by( parent_id=None).one() model = GenericTreeModel(rootnode, treenode=GenericSystemTreeNode) self.logger.info('setting parent index') parent_index = model.index(0, 0, QtCore.QModelIndex()) self.logger.info('setting parent checked') model.setData(parent_index, QtCore.Qt.Checked, QtCore.Qt.CheckStateRole) state = model.data(parent_index, QtCore.Qt.CheckStateRole) self.logger.info('Validating that state is checked') self.assertTrue(state) self.logger.info('Validating that all children are checked') for childnr in range(model.rowCount(parent_index)): subindex = model.index(childnr, 0, parent_index) state = model.data(subindex, QtCore.Qt.CheckStateRole) self.assertTrue(state) self.logger.info('testing unchecking') model.setData(parent_index, QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole) state = model.data(parent_index, QtCore.Qt.CheckStateRole) self.logger.info('Validating that state is unchecked') self.assertFalse(state) self.logger.info('Validating that all children are unchecked') for childnr in range(model.rowCount(parent_index)): subindex = model.index(childnr, 0, parent_index) state = model.data(subindex, QtCore.Qt.CheckStateRole) self.assertFalse(state)
def __init__(self, rootnode, parent=None): GenericTreeModel.__init__(self, rootnode, parent=None) self._treeNode = AbapTreeNode