def test_checks_records_error(): setup_main_database() with tempfile.TemporaryDirectory() as tmpdir: source = EmptySource(tmpdir) metadata_db = MetadataDB(tmpdir) metadata_db.create_session_metadata("Test", True, "http://www.test.com", "2018-01-01-10-00-00") metadata_db.add_filestatus({ 'filename': 'test1.json', 'url': 'http://www.test.com', 'data_type': 'record_package' }) # store details source_session_id = database.start_store("test_source", "2018-01-01-10-00-00", True, metadata_db) for data in metadata_db.list_filestatus(): with database.add_file(source_session_id, data) as database_file: database_file.insert_record({'record': 'totally'}, { 'version': '0.1-does-not-exist', 'extensions': [] }) database.end_store(source_session_id) record_id = 1 # Don't like hard coding ID in. Relies on DB assigning 1 to this new row. But I think we can assume that. # Test assert not database.is_record_check_done(record_id) assert not database.is_check_done(source_session_id) # check! for data in metadata_db.list_filestatus(): checks.check_file(source, source_session_id, data) # Test assert database.is_record_check_done(record_id) assert database.is_check_done(source_session_id) with database.get_engine().begin() as connection: s = sa.sql.select([database.record_check_error_table]) result = connection.execute(s) data = result.fetchone() assert 'The schema version in your data is not valid. Accepted values:' in data[ 'error']
def run_check(self, override_schema_version=None): self.logger.info("Starting run_check") if not database.is_store_done(self.source_id, self.data_version, self.sample): raise Exception('Can not run check without a successful store') source_session_id = database.get_id_of_store(self.source_id, self.data_version, self.sample) for data in self.metadata_db.list_filestatus(): if data['data_type'].startswith('meta'): continue self.logger.info("Starting run_check for file " + data['filename']) check_file(self, source_session_id, data, override_schema_version)
def test_checks_releases(): setup_main_database() with tempfile.TemporaryDirectory() as tmpdir: source = EmptySource(tmpdir) metadata_db = MetadataDB(tmpdir) metadata_db.create_session_metadata("Test", True, "http://www.test.com", "2018-01-01-10-00-00") metadata_db.add_filestatus({ 'filename': 'test1.json', 'url': 'http://www.test.com', 'data_type': 'release_package' }) # store details source_session_id = database.start_store("test_source", "2018-01-01-10-00-00", True, metadata_db) for data in metadata_db.list_filestatus(): with database.add_file(source_session_id, data) as database_file: database_file.insert_release({'release': 'totally'}, {'extensions': []}) database.end_store(source_session_id) release_id = 1 # Don't like hard coding ID in. Relies on DB assigning 1 to this new row. But I think we can assume that. # Test assert not database.is_release_check_done(release_id) # check! for data in metadata_db.list_filestatus(): checks.check_file(source, source_session_id, data) # Test assert database.is_release_check_done(release_id) with database.get_engine().begin() as connection: s = sa.sql.select([database.release_check_table]) result = connection.execute(s) data = result.fetchone() assert data['cove_output']['file_type'] == 'json' assert len(data['cove_output']['validation_errors']) > 0