def test_proxy(self): """ Test QgsProviderSublayerProxyModel """ model = QgsProviderSublayerModel() proxy = QgsProviderSublayerProxyModel() proxy.setSourceModel(model) self.assertEqual(model.rowCount(QModelIndex()), 0) self.assertEqual(proxy.columnCount(QModelIndex()), 2) self.assertEqual(proxy.headerData(0, Qt.Horizontal, Qt.DisplayRole), 'Item') self.assertEqual(proxy.headerData(0, Qt.Horizontal, Qt.ToolTipRole), 'Item') self.assertEqual(proxy.headerData(1, Qt.Horizontal, Qt.DisplayRole), 'Description') self.assertEqual(proxy.headerData(1, Qt.Horizontal, Qt.ToolTipRole), 'Description') layer1 = QgsProviderSublayerDetails() layer1.setType(QgsMapLayerType.RasterLayer) layer1.setName('layer 1') layer1.setDescription('description 1') layer1.setProviderKey('gdal') layer1.setUri('uri 1') layer2 = QgsProviderSublayerDetails() layer2.setType(QgsMapLayerType.VectorLayer) layer2.setName('another layer 2') layer2.setDescription('description 2') layer2.setProviderKey('ogr') layer2.setUri('uri 2') layer2.setFeatureCount(-1) layer2.setWkbType(QgsWkbTypes.LineString) model.setSublayerDetails([layer1, layer2]) item1 = QgsProviderSublayerModel.NonLayerItem() item1.setUri('item uri 1') item1.setName('item name 1') item1.setType('item type 1') item1.setDescription('item desc 1') model.addNonLayerItem(item1) self.assertEqual(proxy.rowCount(QModelIndex()), 3) self.assertEqual(proxy.data(proxy.index(0, 0), Qt.DisplayRole), 'item name 1') self.assertEqual(proxy.data(proxy.index(0, 1), Qt.DisplayRole), 'item desc 1') self.assertEqual( proxy.data(proxy.index(0, 0), QgsProviderSublayerModel.Role.Uri), 'item uri 1') self.assertEqual( proxy.data(proxy.index(0, 0), QgsProviderSublayerModel.Role.Name), 'item name 1') self.assertEqual( proxy.data(proxy.index(0, 0), QgsProviderSublayerModel.Role.Description), 'item desc 1') self.assertEqual( proxy.data(proxy.index(0, 0), QgsProviderSublayerModel.Role.IsNonLayerItem), True) self.assertEqual(proxy.data(proxy.index(1, 0), Qt.DisplayRole), 'another layer 2') self.assertEqual(proxy.data(proxy.index(1, 1), Qt.DisplayRole), 'description 2 - LineString (Uncounted)') self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.ProviderKey), 'ogr') self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.LayerType), QgsMapLayerType.VectorLayer) self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.Uri), 'uri 2') self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.Name), 'another layer 2') self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.Description), 'description 2') self.assertEqual( proxy.data(proxy.index(1, 0), QgsProviderSublayerModel.Role.IsNonLayerItem), False) self.assertEqual(proxy.data(proxy.index(2, 0), Qt.DisplayRole), 'layer 1') self.assertEqual(proxy.data(proxy.index(2, 1), Qt.DisplayRole), 'description 1') self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.ProviderKey), 'gdal') self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.LayerType), QgsMapLayerType.RasterLayer) self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.Uri), 'uri 1') self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.Name), 'layer 1') self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.Description), 'description 1') self.assertEqual( proxy.data(proxy.index(2, 0), QgsProviderSublayerModel.Role.IsNonLayerItem), False) proxy.setFilterString(' 1') self.assertEqual(proxy.rowCount(QModelIndex()), 2) self.assertEqual(proxy.data(proxy.index(0, 0), Qt.DisplayRole), 'item name 1') self.assertEqual(proxy.data(proxy.index(1, 0), Qt.DisplayRole), 'layer 1') proxy.setFilterString(' 2') self.assertEqual(proxy.rowCount(QModelIndex()), 1) self.assertEqual(proxy.data(proxy.index(0, 0), Qt.DisplayRole), 'another layer 2') proxy.setFilterString('ITEM') self.assertEqual(proxy.rowCount(QModelIndex()), 1) self.assertEqual(proxy.data(proxy.index(0, 0), Qt.DisplayRole), 'item name 1') proxy.setFilterString('') self.assertEqual(proxy.rowCount(QModelIndex()), 3) self.assertEqual(proxy.data(proxy.index(0, 0), Qt.DisplayRole), 'item name 1') self.assertEqual(proxy.data(proxy.index(1, 0), Qt.DisplayRole), 'another layer 2') self.assertEqual(proxy.data(proxy.index(2, 0), Qt.DisplayRole), 'layer 1')