def testSettings(self):
        p = QgsProject()
        l = QgsLayout(p)
        map = QgsLayoutItemMap(l)
        shape = QgsLayoutItemShape(l)

        settings = QgsLayoutItemMapItemClipPathSettings(map)
        spy = QSignalSpy(settings.changed)

        self.assertFalse(settings.enabled())
        settings.setEnabled(True)
        self.assertTrue(settings.enabled())
        self.assertEqual(len(spy), 1)
        settings.setEnabled(True)
        self.assertEqual(len(spy), 1)

        settings.setFeatureClippingType(
            QgsMapClippingRegion.FeatureClippingType.NoClipping)
        self.assertEqual(settings.featureClippingType(),
                         QgsMapClippingRegion.FeatureClippingType.NoClipping)
        self.assertEqual(len(spy), 2)
        settings.setFeatureClippingType(
            QgsMapClippingRegion.FeatureClippingType.NoClipping)
        self.assertEqual(len(spy), 2)

        self.assertFalse(settings.forceLabelsInsideClipPath())
        settings.setForceLabelsInsideClipPath(True)
        self.assertTrue(settings.forceLabelsInsideClipPath())
        self.assertEqual(len(spy), 3)
        settings.setForceLabelsInsideClipPath(True)
        self.assertEqual(len(spy), 3)

        settings.setSourceItem(shape)
        self.assertEqual(len(spy), 4)
        self.assertEqual(settings.sourceItem(), shape)

        settings.setSourceItem(None)
        self.assertEqual(len(spy), 5)
        self.assertIsNone(settings.sourceItem())

        settings.setSourceItem(shape)
        self.assertEqual(len(spy), 6)
        shape.deleteLater()
        QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete)
        del shape
        self.assertIsNone(settings.sourceItem())
    def testIsActive(self):
        p = QgsProject()
        l = QgsLayout(p)
        map = QgsLayoutItemMap(l)
        shape = QgsLayoutItemShape(l)

        settings = QgsLayoutItemMapItemClipPathSettings(map)
        self.assertFalse(settings.isActive())
        settings.setEnabled(True)
        self.assertFalse(settings.isActive())
        settings.setSourceItem(shape)
        self.assertTrue(settings.isActive())
        settings.setEnabled(False)
        self.assertFalse(settings.isActive())

        settings.setEnabled(True)
        self.assertTrue(settings.isActive())
        shape.deleteLater()
        QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete)
        del shape
        self.assertFalse(settings.isActive())