def test_collections_returns_all_collections(self): collection_watcher = CollectionWatcher('/foo', Mock(), Mock()) collection_watcher._collections_by_dir = { "/foo": { Collection("id1", "var1", "path1", 1, 2, datetime.now(), datetime.now()), Collection("id2", "var2", "path2", 3, 4, datetime.now(), datetime.now()), }, "/bar": { Collection("id3", "var3", "path3", 5, 6, datetime.now(), datetime.now()), Collection("id4", "var4", "path4", 7, 8, datetime.now(), datetime.now()), } } flattened_collections = collection_watcher._collections() self.assertEqual(len(flattened_collections), 4)
def test_directory_with_directory(self): directory = os.path.join(os.path.dirname(__file__), "../resources/data") collection = Collection(dataset_id="test_dataset", path=directory, projection="Grid", slices={}, dimension_names={}, historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) self.assertEqual(directory, collection.directory())
def test_owns_file_does_not_match(self): directory = os.path.join(os.path.dirname(__file__), "../resources/data") collection = Collection(dataset_id="test_dataset", path=directory, projection="Grid", slices={}, dimension_names={}, historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) self.assertFalse(collection.owns_file("test_file.nc"))
def test_owns_file_raises_exception_with_directory(self): directory = os.path.join(os.path.dirname(__file__), "../resources/data") collection = Collection(dataset_id="test_dataset", path=directory, projection="Grid", slices={}, dimension_names={}, historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) self.assertRaises(IsADirectoryError, collection.owns_file, directory)
def test_validate_collection_with_relative_path(self): collections_path = os.path.join(os.path.dirname(__file__), '../resources/collections.yml') collection_watcher = CollectionWatcher(collections_path, Mock(), Mock()) collection = Collection(dataset_id="test_dataset", path="relative/path", projection="Grid", slices=frozenset(), dimension_names=frozenset(), historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) self.assertRaises(RelativePathCollectionError, collection_watcher._validate_collection, collection)
def test_validate_collection(self): collections_path = os.path.join(os.path.dirname(__file__), '../resources/collections.yml') collection_watcher = CollectionWatcher(collections_path, Mock(), Mock()) collection = Collection(dataset_id="test_dataset", path="/absolute/path", projection="Grid", slices=frozenset(), dimension_names=frozenset(), historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) collection_watcher._validate_collection(collection)
def test_owns_file_matches_pattern(self): directory = os.path.join(os.path.dirname(__file__), "../resources/data") pattern = os.path.join(directory, "test_*.nc") collection = Collection(dataset_id="test_dataset", path=pattern, projection="Grid", slices={}, dimension_names={}, historical_priority=1, forward_processing_priority=2, date_from=None, date_to=None) file_path = os.path.join(directory, "test_file.nc") self.assertTrue(collection.owns_file(file_path))
def test_from_dict_missing_optional_values(self): collection_dict = { 'id': 'test_id', 'projection': 'Grid', 'dimensionNames': { 'latitude': 'lat', 'longitude': 'lon', 'variable': 'test_var' }, 'slices': { 'lat': 30, 'lon': 30, 'time': 1 }, 'path': '/some/path', 'priority': 3 } expected_collection = Collection(dataset_id='test_id', projection="Grid", slices=frozenset([('lat', 30), ('lon', 30), ('time', 1)]), dimension_names=frozenset([ ('latitude', 'lat'), ('longitude', 'lon'), ('variable', 'test_var') ]), path='/some/path', historical_priority=3, forward_processing_priority=None, date_from=None, date_to=None) self.assertEqual(expected_collection, Collection.from_dict(collection_dict))
def test_from_dict(self): collection_dict = { 'id': 'test_id', 'path': '/some/path', 'projection': 'Grid', 'dimensionNames': { 'latitude': 'lat', 'longitude': 'lon', 'variable': 'test_var' }, 'slices': { 'lat': 30, 'lon': 30, 'time': 1 }, 'priority': 1, 'forward-processing-priority': 2, 'from': '2020-01-01T00:00:00+00:00', 'to': '2020-02-01T00:00:00+00:00' } expected_collection = Collection( dataset_id='test_id', projection="Grid", slices=frozenset([('lat', 30), ('lon', 30), ('time', 1)]), dimension_names=frozenset([('latitude', 'lat'), ('longitude', 'lon'), ('variable', 'test_var')]), path='/some/path', historical_priority=1, forward_processing_priority=2, date_from=datetime(2020, 1, 1, 0, 0, 0, tzinfo=timezone.utc), date_to=datetime(2020, 2, 1, 0, 0, 0, tzinfo=timezone.utc)) self.assertEqual(expected_collection, Collection.from_dict(collection_dict))