コード例 #1
0
    def test_validate_panden_missing_aantal_bouwlagen(self, mock_issue,
                                                      mock_log_issue,
                                                      mock_logger):
        self.entities = [
            {
                'identificatie': '03631',
                'aantal_bouwlagen': None,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 0
            },
            {
                'identificatie':
                '0427',  # Non Amsterdam object will not be validated
                'aantal_bouwlagen': None,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 0
            }
        ]
        validator = BAGValidator("bag", "panden", "identificatie")
        for entity in self.entities:
            validator.validate(entity)
        self.assertTrue(validator.result())

        mocked_issue = mock_issue.return_value

        mock_issue.assert_has_calls([
            call(QA_CHECK.Value_aantal_bouwlagen_not_filled, self.entities[0],
                 'identificatie', 'aantal_bouwlagen'),
        ])

        mock_log_issue.assert_called_with(mock_logger, 'warning', mocked_issue)
コード例 #2
0
    def test_validate_panden_invalid_aantal_bouwlagen(self, mock_issue,
                                                      mock_log_issue,
                                                      mock_logger):
        self.entities = [{
            'identificatie': '03631',
            'aantal_bouwlagen': 10,
            'hoogste_bouwlaag': 10,
            'laagste_bouwlaag': 0
        }, {
            'identificatie': '03632',
            'aantal_bouwlagen': 11,
            'hoogste_bouwlaag': 10,
            'laagste_bouwlaag': -1
        }, {
            'identificatie': '03633',
            'aantal_bouwlagen': 12,
            'hoogste_bouwlaag': 13,
            'laagste_bouwlaag': 0
        }]
        validator = BAGValidator("bag", "panden", "identificatie")
        for entity in self.entities:
            validator.validate(entity)
        self.assertTrue(validator.result())

        mocked_issue = mock_issue.return_value

        mock_issue.assert_has_calls([
            call(QA_CHECK.Value_aantal_bouwlagen_should_match,
                 self.entities[0],
                 'identificatie',
                 'aantal_bouwlagen',
                 compared_to='hoogste_bouwlaag and laagste_bouwlaag combined',
                 compared_to_value=11),
            call(QA_CHECK.Value_aantal_bouwlagen_should_match,
                 self.entities[1],
                 'identificatie',
                 'aantal_bouwlagen',
                 compared_to='hoogste_bouwlaag and laagste_bouwlaag combined',
                 compared_to_value=12),
            call(QA_CHECK.Value_aantal_bouwlagen_should_match,
                 self.entities[2],
                 'identificatie',
                 'aantal_bouwlagen',
                 compared_to='hoogste_bouwlaag and laagste_bouwlaag combined',
                 compared_to_value=14),
        ])

        mock_log_issue.assert_called_with(mock_logger, 'warning', mocked_issue)
コード例 #3
0
    def test_validate_verblijfsobjecten_invalid_gebruiksdoel(
            self, mock_issue, mock_log_issue, mock_logger):
        self.entity = {
            'identificatie': '03631',
            'gebruiksdoel': [{
                'omschrijving': 'any invalid gebruiksdoel'
            }],
        }

        validator = BAGValidator("bag", "verblijfsobjecten", "identificatie")
        validator.validate(self.entity)
        self.assertTrue(validator.result())

        mocked_issue = mock_issue.return_value
        mock_issue.assert_called_with(QA_CHECK.Value_gebruiksdoel_in_domain,
                                      self.entity, 'identificatie',
                                      'gebruiksdoel')
        mock_log_issue.assert_called_with(mock_logger, 'warning', mocked_issue)
コード例 #4
0
    def test_validate_panden_valid(self, mock_log_issue):
        self.entities = [
            {
                'identificatie': '03631',
                'aantal_bouwlagen': 11,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 0
            },
            {
                'identificatie': '03632',
                'aantal_bouwlagen': 5,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 5
            },
            {
                'identificatie': '03633',
                'aantal_bouwlagen': 12,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': -1
            },
            {
                'identificatie': '0457',  # Will be skipped
                'aantal_bouwlagen': 0,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 0
            },
            {
                'identificatie': '0424',  # Will be skipped
                'aantal_bouwlagen': 0,
                'hoogste_bouwlaag': 10,
                'laagste_bouwlaag': 0
            }
        ]
        validator = BAGValidator("bag", "panden")
        for entity in self.entities:
            validator.validate(entity)
        self.assertTrue(validator.result())

        self.assertEqual(mock_log_issue.call_count, 0)
コード例 #5
0
    def test_validate_verblijfsobjecten_valid(self, mock_log_issue):
        self.entities = [{
            'gebruiksdoel': [{
                'omschrijving': 'woonfunctie'
            }],
        }, {
            'gebruiksdoel': [{
                'omschrijving': 'woonfunctie'
            }, {
                'omschrijving': 'bijeenkomstfunctie'
            }, {
                'omschrijving': 'celfunctie'
            }, {
                'omschrijving': 'gezondheidszorgfunctie'
            }, {
                'omschrijving': 'industriefunctie'
            }, {
                'omschrijving': 'kantoorfunctie'
            }, {
                'omschrijving': 'logiesfunctie'
            }, {
                'omschrijving': 'onderwijsfunctie'
            }, {
                'omschrijving': 'sportfunctie'
            }, {
                'omschrijving': 'winkelfunctie'
            }, {
                'omschrijving': 'overige gebruiksfunctie'
            }],
        }]
        validator = BAGValidator("bag", "verblijfsobjecten")
        for entity in self.entities:
            validator.validate(entity)
        self.assertTrue(validator.result())

        self.assertEqual(mock_log_issue.call_count, 0)
コード例 #6
0
    def test_check_aantal_eenheden_complex(self, mock_issue, mock_log_issue,
                                           mock_logger):
        self.valid_entities = [{
            'identificatie': '03631',
            'aantal_eenheden_complex': 10,
            'gebruiksdoel_woonfunctie': {
                'omschrijving': 'any complex'
            },
        }, {
            'identificatie': '03632',
            'aantal_eenheden_complex': 10,
            'gebruiksdoel_gezondheidszorgfunctie': {
                'omschrijving': 'any Complex'
            },
        }]

        self.invalid_entities = [{
            'identificatie': '03631',
            'aantal_eenheden_complex': 10,
            'gebruiksdoel_woonfunctie': {
                'omschrijving': 'any woonfunctie'
            },
            'gebruiksdoel_gezondheidszorgfunctie': {
                'omschrijving': 'any gezondheidszorgfunctie'
            },
        }, {
            'identificatie': '03632',
            'aantal_eenheden_complex': None,
            'gebruiksdoel_woonfunctie': {
                'omschrijving': 'any complex'
            },
        }, {
            'identificatie': '03633',
            'aantal_eenheden_complex': None,
            'gebruiksdoel_gezondheidszorgfunctie': {
                'omschrijving': 'any Complex'
            },
        }]

        validator = BAGValidator("bag", "verblijfsobjecten", "identificatie")
        for entity in self.valid_entities:
            validator._check_aantal_eenheden_complex(entity)

        self.assertEqual(mock_log_issue.call_count, 0)

        for entity in self.invalid_entities:
            validator._check_aantal_eenheden_complex(entity)

        mocked_issue = mock_issue.return_value
        mock_issue.assert_has_calls([
            call(
                QA_CHECK.Value_aantal_eenheden_complex_should_be_empty,
                self.invalid_entities[0],
                'identificatie',
                'aantal_eenheden_complex',
                compared_to=
                'gebruiksdoel_woonfunctie and gebruiksdoel_gezondheidszorgfunctie',
                compared_to_value='any woonfunctie, any gezondheidszorgfunctie'
            ),
            call(
                QA_CHECK.Value_aantal_eenheden_complex_should_be_filled,
                self.invalid_entities[1],
                'identificatie',
                'aantal_eenheden_complex',
                compared_to=
                'gebruiksdoel_woonfunctie and gebruiksdoel_gezondheidszorgfunctie',
                compared_to_value='any complex, '),
            call(
                QA_CHECK.Value_aantal_eenheden_complex_should_be_filled,
                self.invalid_entities[2],
                'identificatie',
                'aantal_eenheden_complex',
                compared_to=
                'gebruiksdoel_woonfunctie and gebruiksdoel_gezondheidszorgfunctie',
                compared_to_value=', any Complex'),
        ])
        mock_log_issue.assert_called_with(mock_logger, 'warning', mocked_issue)
コード例 #7
0
    def test_check_gebruiksdoel_plus(self, mock_issue, mock_log_issue,
                                     mock_logger):
        self.valid_entities = [{
            'identificatie':
            '03631',
            'gebruiksdoel': [{
                'omschrijving': 'woonfunctie'
            }],
            'gebruiksdoel_woonfunctie': {
                'omschrijving': 'any woonfunctie'
            },
        }, {
            'identificatie':
            '03632',
            'gebruiksdoel': [{
                'omschrijving': 'gezondheidszorgfunctie'
            }],
            'gebruiksdoel_gezondheidszorgfunctie': {
                'omschrijving': 'any gezondheidszorgfunctie'
            },
        }]

        self.invalid_entities = [{
            'identificatie':
            '03631',
            'gebruiksdoel': [{
                'omschrijving': 'other gebruiksdoel'
            }],
            'gebruiksdoel_woonfunctie': {
                'omschrijving': 'any woonfunctie'
            },
        }, {
            'identificatie':
            '03632',
            'gebruiksdoel': [{
                'omschrijving': 'other gebruiksdoel'
            }],
            'gebruiksdoel_gezondheidszorgfunctie': {
                'omschrijving': 'any gezondheidszorgfunctie'
            },
        }]

        validator = BAGValidator("bag", "verblijfsobjecten", "identificatie")
        for entity in self.valid_entities:
            gebruiksdoelen = [
                gebruiksdoel.get('omschrijving')
                for gebruiksdoel in entity.get('gebruiksdoel')
            ]
            validator._check_gebruiksdoel_plus(entity, gebruiksdoelen)

        self.assertEqual(mock_log_issue.call_count, 0)

        for entity in self.invalid_entities:
            gebruiksdoelen = [
                gebruiksdoel.get('omschrijving')
                for gebruiksdoel in entity.get('gebruiksdoel')
            ]
            validator._check_gebruiksdoel_plus(entity, gebruiksdoelen)

        mocked_issue = mock_issue.return_value
        mock_issue.assert_has_calls([
            call(QA_CHECK.Value_gebruiksdoel_woonfunctie_should_match,
                 self.invalid_entities[0],
                 'identificatie',
                 'gebruiksdoel_woonfunctie',
                 compared_to='gebruiksdoel'),
            call(QA_CHECK.
                 Value_gebruiksdoel_gezondheidszorgfunctie_should_match,
                 self.invalid_entities[1],
                 'identificatie',
                 'gebruiksdoel_gezondheidszorgfunctie',
                 compared_to='gebruiksdoel'),
        ])
        mock_log_issue.assert_called_with(mock_logger, 'warning', mocked_issue)
コード例 #8
0
    def test_validate_standplaats_ligplaats(self, mock_issue, mock_log_issue,
                                            mock_logger):
        entity = {
            'identificatie':
            '03631',
            'gebruiksdoel': [{
                'omschrijving': 'woonfunctie',
            }, {
                'omschrijving': 'sportfunctie',
            }]
        }

        # No issues ligplaatsen
        validator = BAGValidator("bag", "ligplaatsen", "identificatie")
        validator.validate(entity)
        self.assertTrue(validator.result())
        mock_issue.assert_not_called()
        mock_log_issue.assert_not_called()

        # No issues standplaatsen
        validator = BAGValidator("bag", "standplaatsen", "identificatie")
        validator.validate(entity)
        self.assertTrue(validator.result())
        mock_issue.assert_not_called()
        mock_log_issue.assert_not_called()

        entity = {
            'identificatie':
            '03631',
            'gebruiksdoel': [{
                'omschrijving': 'invalid'
            }, {
                'omschrijving': 'woonfunctie',
            }, {
                'omschrijving': 'woonfunctie',
            }]
        }

        # With issues ligplaatsen
        validator = BAGValidator("bag", "ligplaatsen", "identificatie")
        validator.validate(entity)
        self.assertTrue(validator.result())

        mock_issue.assert_has_calls([
            call(QA_CHECK.Value_gebruiksdoel_in_domain, entity,
                 'identificatie', 'gebruiksdoel'),
            call(QA_CHECK.Value_duplicates, entity, 'identificatie',
                 'gebruiksdoel'),
        ])

        mock_log_issue.assert_has_calls([
            call(mock_logger, 'warning', mock_issue.return_value),
            call(mock_logger, 'warning', mock_issue.return_value),
        ])

        mock_issue.reset_mock()
        mock_log_issue.reset_mock()

        # With issues standplaatsen
        validator = BAGValidator("bag", "standplaatsen", "identificatie")
        validator.validate(entity)
        self.assertTrue(validator.result())

        mock_issue.assert_has_calls([
            call(QA_CHECK.Value_gebruiksdoel_in_domain, entity,
                 'identificatie', 'gebruiksdoel'),
            call(QA_CHECK.Value_duplicates, entity, 'identificatie',
                 'gebruiksdoel'),
        ])

        mock_log_issue.assert_has_calls([
            call(mock_logger, 'warning', mock_issue.return_value),
            call(mock_logger, 'warning', mock_issue.return_value),
        ])
コード例 #9
0
 def test_validates(self):
     self.assertTrue(BAGValidator.validates('bag', 'panden'))
     self.assertFalse(
         BAGValidator.validates('any catalog', 'any collection'))