Skip to content
Snippets Groups Projects
test_dataset.py 2.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • Swen Vermeul's avatar
    Swen Vermeul committed
    import json
    import random
    import re
    
    import pytest
    import time
    
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    
    def test_get_datasets(space):
        # test paging
        o=space.openbis
        current_datasets = o.get_datasets(start_with=1, count=1)
        assert current_datasets is not None
        # we cannot assert == 1, because search is delayed due to lucene search...
        assert len(current_datasets) <= 1
    
    
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    def test_create_delete_dataset(space):
    
        timestamp = time.strftime('%a_%y%m%d_%H%M%S').upper()
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        o=space.openbis
    
        dataset = o.new_dataset(
    
            type   = 'RAW_DATA',
            sample = '/DEFAULT/DEFAULT/DEFAULT',
            files  = ['testfile'],
            props  = {'name': 'some good name', 'notes': 'my notes' }
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        )
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        assert dataset is not None
    
        assert dataset.permId is None  # object is not saved
        assert dataset.p is not None
        assert dataset.p.name == 'some good name'
        assert dataset.p.notes == 'my notes'
    
        with pytest.raises(Exception):
            dataset.non_existing_attribute = "invalid attribute"
            assert "attribute does not exist, should fail" is None
    
        with pytest.raises(Exception):
            dataset.p.non_existing_property = "invalid propery"
            assert "property does not exist, should fail" is None
        
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        dataset.save()
    
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        # now there should appear a permId in our object
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        assert dataset.permId is not None
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        permId = dataset.permId
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    
        # get it by permId
        dataset_by_permId = o.get_dataset(dataset.permId)
        assert dataset_by_permId is not None
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        assert dataset_by_permId.permId == permId
        assert dataset_by_permId.type is not None
        assert dataset_by_permId.type.code == 'RAW_DATA'
        assert dataset_by_permId.kind == 'PHYSICAL'
        assert dataset_by_permId.sample is not None
        assert dataset_by_permId.sample.code == 'DEFAULT'
        assert dataset_by_permId.experiment is not None
        assert dataset_by_permId.experiment.code == 'DEFAULT'
    
        assert dataset_by_permId.p is not None
        assert dataset_by_permId.p.name == 'some good name'
        assert dataset_by_permId.p.notes == 'my notes'
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    
        # delete datasets
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        dataset.delete('dataset creation test on '+timestamp)
    
    
        # get by permId should now throw an error
        with pytest.raises(Exception):
            deleted_ds = o.get_dataset(permId)
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    
    
    def test_create_dataset_with_code(space):
        timestamp = time.strftime('%a_%y%m%d_%H%M%S').upper()
        o=space.openbis
    
        dataset = o.new_dataset(
            type       = 'UNKNOWN',
            code       = timestamp,
            experiment = '/DEFAULT/DEFAULT/DEFAULT', 
            sample     = '/DEFAULT/DEFAULT/DEFAULT',
            kind       = 'CONTAINER'
        )
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        assert dataset is not None
        assert dataset.permId is None  # object is not saved
        assert dataset.code == timestamp
        dataset.save()
    
        # our permId is now identical to the code we provided
        assert dataset.permId is not None 
        assert dataset.permId == timestamp
    
    Swen Vermeul's avatar
    Swen Vermeul committed
    
    
    Swen Vermeul's avatar
    Swen Vermeul committed
        dataset.delete('dataset creation test on {}'.format(timestamp))
    
    Swen Vermeul's avatar
    Swen Vermeul committed