def test_repeat_row(): """If the same requirement id is present twice, raise an exception""" assert Requirement.objects.count() == 0 processor = import_reqs.RowProcessor() processor.policies = Mock(**{'from_row.return_value': mommy.make(Policy)}) row = { 'reqId': '13.37', 'issuingBody': 'body', 'policySection': 'None', 'policySubSection': 'None', 'reqText': 'texttexttext', 'verb': 'shall', 'Impacted Entity': 'something', 'reqDeadline': 'N/A', 'citation': 'N/A' } processor.add(row) assert Requirement.objects.count() == 1 assert Requirement.objects.first().issuing_body == 'body' with pytest.raises(ValueError): processor.add(row) row['issuingBody'] = 'body2' processor2 = import_reqs.RowProcessor() processor2.policies = processor.policies # Different processor, so we don't raise an exception, we just modify the # existing entry processor2.add(row) assert Requirement.objects.count() == 1 assert Requirement.objects.first().issuing_body == 'body2'
def test_bad_requirement_ids_raise_value_error(requirement_id): processor = import_reqs.RowProcessor() processor.policies = Mock(**{'from_row.return_value': mommy.make(Policy)}) row = { 'policySection': 'None', 'policySubSection': 'None', 'reqDeadline': 'N/A', 'reqText': 'texttexttext', 'reqId': requirement_id, } with pytest.raises(ValueError): processor.add(row)
def test_varying_requirement_headers(verb_field, reqid_field, entity_field, citation_field): processor = import_reqs.RowProcessor() processor.policies = Mock(**{'from_row.return_value': mommy.make(Policy)}) row = { 'policySection': 'None', 'policySubSection': 'None', 'reqDeadline': 'N/A', 'reqText': 'texttexttext', } row[citation_field] = 'N/A' row[entity_field] = 'something' row[reqid_field] = '13.37' row[verb_field] = 'shall' processor.add(row) assert Requirement.objects.count() == 1 assert Requirement.objects.first().citation == 'N/A' assert Requirement.objects.first().impacted_entity == 'something' assert Requirement.objects.first().req_id == '13.37' assert Requirement.objects.first().verb == 'shall'