def testProject(self): p = QgsProject() m = self.createTestMetadata() metadata_changed_spy = QSignalSpy(p.metadataChanged) p.setMetadata(m) self.assertEqual(len(metadata_changed_spy), 1) self.checkExpectedMetadata(p.metadata()) p.clear() self.assertEqual(len(metadata_changed_spy), 2) self.assertEqual(p.metadata().title(), '') # test that the project title is just a shortcut to the metadata title field p.setTitle('my title') self.assertEqual(p.metadata().title(), 'my title') m.setTitle('my title 2') p.setMetadata(m) self.assertEqual(p.title(), 'my title 2')
def test_project_server_validator(self): """Test project server validator.""" project = QgsProject() layer = QgsVectorLayer('Point?field=fldtxt:string', 'layer_1', 'memory') project.addMapLayers([layer]) # Valid valid, results = QgsProjectServerValidator.validate(project) self.assertTrue(valid) self.assertFalse(results) layer_1 = QgsVectorLayer('Point?field=fldtxt:string', 'layer_1', 'memory') project.addMapLayers([layer_1]) # Not valid, same layer name valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.DuplicatedNames, results[0].error) # Not valid, short name is invalid layer_1.setShortName('layer_1_invalid_#') valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.LayerShortName, results[0].error) # Not valid, same short name as the first layer name layer_1.setShortName('layer_1') valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.DuplicatedNames, results[0].error) # Valid layer_1.setShortName('layer_1_bis') valid, results = QgsProjectServerValidator.validate(project) self.assertTrue(valid) self.assertEqual(0, len(results)) # Not valid, a group with same name as the first layer group = project.layerTreeRoot().addGroup('layer_1') valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.DuplicatedNames, results[0].error) # Valid group.setCustomProperty('wmsShortName', 'my_group1') valid, results = QgsProjectServerValidator.validate(project) self.assertTrue(valid) self.assertEqual(0, len(results)) # Not valid, the project title is invalid project.setTitle('@ layer 1') valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.ProjectShortName, results[0].error) # Valid project title project.setTitle('project_title') valid, results = QgsProjectServerValidator.validate(project) self.assertTrue(valid) self.assertEqual(0, len(results)) # Valid despite the bad project title, use project short name project.setTitle('@ layer 1') project.writeEntry('WMSRootName', '/', 'project_short_name') valid, results = QgsProjectServerValidator.validate(project) self.assertTrue(valid) self.assertEqual(0, len(results)) # Not valid project short name project.setTitle('project_title') project.writeEntry('WMSRootName', '/', 'project with space') valid, results = QgsProjectServerValidator.validate(project) self.assertFalse(valid) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.ProjectShortName, results[0].error) # Not valid, duplicated project short name project.writeEntry('WMSRootName', '/', 'layer_1') valid, results = QgsProjectServerValidator.validate(project) self.assertEqual(1, len(results)) self.assertEqual(QgsProjectServerValidator.ProjectRootNameConflict, results[0].error)