Skip to content
Snippets Groups Projects
test_dataset.py 3.14 KiB
Newer Older
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

Swen Vermeul's avatar
Swen Vermeul committed
    assert dataset_by_permId.registrator is not None
    assert dataset_by_permId.registrationDate is not None
    # check date format: 2019-03-22 11:36:40 
    assert re.search('^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}$', dataset_by_permId.registrationDate) is not None

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