def test_financial_charge_roi_and_missing_amount(self): payload = payloads.financial_charge_roi_and_missing_amount response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'amount-originally-secured' is a required property", "$.") assert result_contains_at( data, "Additional properties are not allowed ('rate-of-interest' was unexpected)", "$.")
def test_legacy_fields(self): payload = payloads.simple_charge_legacy_fields response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "['old-register-part']} is not allowed", "$.") assert result_contains_at( data, "'migration-supplier' is a required property", "$.") assert result_contains_at( data, "'migrating-authority' is a required property", "$.")
def test_s52_charge_missing_fields(self): payload = payloads.s52_charge_missing_fields response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'land-capacity-description' is a required property", '$.') assert result_contains_at( data, "'land-compensation-amount-type' is a required property", '$.') assert result_contains_at( data, "'land-compensation-paid' is a required property", '$.')
def test_s8_fields_too_large(self): payload = copy.deepcopy(payloads.simple_charge_with_s8_field) payload['land-works-particulars'] = text_401_chars payload['land-sold-description'] = text_401_chars payload['charge-type'] = 'Land compensation' response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "'{}' is too long".format(text_401_chars), '$.land-works-particulars') assert result_contains_at(data, "'{}' is too long".format(text_401_chars), '$.land-sold-description')
def test_migrated_missing_fields(self): payload = payloads.simple_migrated_charge_missing_fields response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'old-register-part' is a required property", "$.")
def test_lca_s52_invalid_paid(self): payload = copy.deepcopy(payloads.s52_charge) payload['land-compensation-paid'] = "£100000" response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "'£100000' does not match", "$.land-compensation-paid")
def test_financial_charge_invalid_amount(self): payload = payloads.financial_charge_invalid_amount response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "'0.2' does not match '", "$.amount-originally-secured")
def test_financial_charge_invalid_roi(self): payload = payloads.financial_charge_invalid_roi response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "'None' does not match", "$.rate-of-interest")
def test_lon_charge_no_certificates(self): payload = payloads.lon_charge_no_certificates response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'tribunal-temporary-certificate-expiry-date' is a required property", "$.") assert result_contains_at( data, "'tribunal-temporary-certificate-date' is a required property", "$.") assert result_contains_at( data, "'tribunal-definitive-certificate-date' is a required property", "$.")
def test_lon_charge_missing_field(self): payload = payloads.lon_charge_missing_field response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "'applicant-name' is a required property", "$.")
def test_sub_category_missing_charge_sub_category(self): payload = copy.deepcopy(payloads.simple_charge) del payload['charge-sub-category'] response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'charge-sub-category' is a required property", "$.")
def test_array_provision(self): payload = payloads.simple_charge_array_provision response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "Additional properties are not allowed ('statutory-provisions' was unexpected)", "$.")
def test_lca_s52_invalid_amount_type(self): payload = copy.deepcopy(payloads.s52_charge) payload['land-compensation-amount-type'] = "Invalid type" response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'Invalid type' is not one of ['Agreed amount', 'Estimated amount']", "$.land-compensation-amount-type")
def test_lca_s52_with_s8_field(self): payload = copy.deepcopy(payloads.s52_charge) payload['land-sold-description'] = "Invalid" response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "Additional properties are not allowed ('land-sold-description' was unexpected)", "$.")
def test_invalid_financial_field(self): payload = payloads.simple_charge_with_financial_field response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) self.assertEqual(len(data), 1) assert result_contains_at( data, "Additional properties are not allowed ('rate-of-interest' was unexpected)", "$.")
def test_sub_category_invalid_sub_category_type(self): payload = copy.deepcopy(payloads.simple_charge) payload['charge-sub-category'] = 'Not a valid sub-category' response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'Not a valid sub-category' is not one of ['Change a development', ", "$.charge-sub-category")
def test_servient_limited_no_units(self): payload = copy.deepcopy(payloads.lon_charge_without_position_dimension) payload['structure-position-and-dimension'] = { 'height': '40', 'extent-covered': 'All of the extent' } response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, " is not valid under any of the given schemas", "$.structure-position-and-dimension")
def test_sub_category_mismatching_sub_category(self): payload = copy.deepcopy(payloads.simple_charge) payload['charge-sub-category'] = 'Smoke control order' response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at( data, "'Smoke control order' is not one of ['Approval under house in multiple " "occupation (HMO)', 'Grant', 'Interim certificate under HMO',", "$.charge-sub-category")
def test_sub_category_invalid_charge_type(self): payload = copy.deepcopy(payloads.simple_charge) payload['charge-type'] = 'Not a valid charge type' response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) self.assertEqual(response.status_code, 400) data = json.loads(response.data.decode()) assert result_contains_at( data, "'Not a valid charge type' is not one of ['Planning', 'Listed building', " "'Housing', 'Other', 'Land compensation', 'Financial', 'Light obstruction notice']", "$.charge-type")
def test_lon_charge_wrong_type(self): payload = payloads.lon_charge_wrong_type response = self.app.post('/validate', data=json.dumps(payload), headers={'Content-Type': 'application/json'}) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 400) assert result_contains_at(data, "Additional properties are not allowed", "$.") assert result_contains_at( data, "tribunal-temporary-certificate-expiry-date", "$.") assert result_contains_at(data, "documents-filed", "$.") assert result_contains_at(data, "structure-position-and-dimension", "$.") assert result_contains_at(data, "tribunal-temporary-certificate-date", "$.") assert result_contains_at(data, "applicant-name", "$.") assert result_contains_at(data, "applicant-address", "$.")