Skip to content
Snippets Groups Projects
Commit 973093a5 authored by florian's avatar florian
Browse files

TST: Update test_error_stuff.py

parent 7b4d59ac
Branches
Tags
No related merge requests found
...@@ -129,245 +129,185 @@ def test_insertion_with_invalid_parents(): ...@@ -129,245 +129,185 @@ def test_insertion_with_invalid_parents():
def test_insertion_with_invalid_properties(): def test_insertion_with_invalid_properties():
import caosdb as h with pytest.raises(TransactionError) as te:
# @UnresolvedImport
from nose.tools import assert_false, assert_true, assert_is_not_none, assert_equal
try:
try:
h.execute_query("FIND NoTypeProperty").delete()
except BaseException:
pass
p = h.Property( p = h.Property(
name="NoTypeProperty", name="TestNoTypeProperty",
datatype="Text").add_property( datatype="Text").add_property(
id=-1) id=-1)
p.insert(raise_exception_on_error=True) p.insert(raise_exception_on_error=True)
raise AssertionError( # TransactionError with ContainerError with
"This should raise an UnqualifiedPropertiesError.") # UnqualifiedPropertiesError
except EntityError as e: upe = te.value.get_errors()[0].get_errors()[0]
assert_true(isinstance(e, UnqualifiedPropertiesError)) assert isinstance(upe, UnqualifiedPropertiesError)
assert_is_not_none(e.get_entity()) assert not upe.get_entity() is None
assert_equal(e.get_entity().name, p.name) assert upe.get_entity().name == p.name
assert_true(e.get_entity().has_errors()) assert upe.get_entity().has_errors()
assert_true(p.has_errors()) assert p.has_errors()
assert_false(p.is_valid()) assert not p.is_valid()
assert_false(e.get_entity().is_valid()) assert not e.get_entity().is_valid()
finally:
try:
p.delete()
except BaseException:
pass
def test_entity_does_not_exist(): def test_entity_does_not_exist():
import caosdb as h """When retrieving a container with existing and non-existing
# @UnresolvedImport entities, only those that don't exist should cause
from nose.tools import assert_true, assert_false, assert_equal, assert_is_not_none EntityDoesNotExistErrors.
try: """
p1 = h.Property( p1 = h.Property(name="TestNon-ExistentProperty1").retrieve(
name="Non-ExistentProperty1").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
p2 = h.Property( p2 = h.Property(name="TestNon-ExistentProperty2").retrieve(
name="Non-ExistentProperty2").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
p3 = h.Property( p3 = h.Property(name="TestNon-ExistentProperty3").retrieve(
name="Non-ExistentProperty3").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
assert_false(p1.is_valid()) # None of them should exist
assert_true(p1.id is None or p1.id < 0) assert not p1.is_valid()
assert_false(p2.is_valid()) assert (p1.id is None or p1.id < 0)
assert_true(p2.id is None or p2.id < 0) assert not p2.is_valid()
assert_false(p3.is_valid()) assert (p2.id is None or p2.id < 0)
assert_true(p3.id is None or p3.id < 0) assert not p3.is_valid()
assert (p3.id is None or p3.id < 0)
pe = h.Property(name="ExistentProperty", datatype="text").insert()
pe = h.Property(name="TestExistentProperty", datatype="text").insert()
c = h.Container().extend( c = h.Container().extend(
[ [
h.Property( h.Property(
name="Non-ExistentProperty1"), name="TestNon-ExistentProperty1"),
h.Property( h.Property(
name="Non-ExistentProperty2"), name="TestNon-ExistentProperty2"),
h.Property( h.Property(
name="Non-ExistentProperty3"), name="TestNon-ExistentProperty3"),
h.Property( h.Property(
name="ExistentProperty")]) name="TestExistentProperty")])
try: with pytest.raises(TransactionError) as te:
c.retrieve() c.retrieve()
except EntityDoesNotExistError as e: te = te.value
assert_equal(3, len(e.get_entities())) assert te.has_error(EntityDoesNotExistError)
for entity in e.get_entities(): assert not pe in te.get_all_entities()
assert_is_not_none(entity.name) for p in (p1, p2, p3):
assert_true(entity.name.startswith("Non-ExistentProperty")) assert p in te.get_all_entities()
finally:
try:
pe.delete()
except BaseException:
pass
def test_insert_existent_entity(): def test_insert_existent_entity():
import caosdb as h """Insertion of an already existing entity should cause a
# @UnresolvedImport UniqueNamesError.
from nose.tools import assert_true, assert_false, assert_equal, assert_is_not_none
try: """
p1 = h.Property( p1 = h.Property(name="TestNon-ExistentProperty1").retrieve(
name="Non-ExistentProperty1").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
p2 = h.Property( p2 = h.Property(name="TestNon-ExistentProperty2").retrieve(
name="Non-ExistentProperty2").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
p3 = h.Property( p3 = h.Property(name="TestNon-ExistentProperty3").retrieve(
name="Non-ExistentProperty3").retrieve(raise_exception_on_error=False) raise_exception_on_error=False)
assert_false(p1.is_valid()) # None of them should exist
assert_true(p1.id is None or p1.id < 0) assert not p1.is_valid()
assert_false(p2.is_valid()) assert (p1.id is None or p1.id < 0)
assert_true(p2.id is None or p2.id < 0) assert not p2.is_valid()
assert_false(p3.is_valid()) assert (p2.id is None or p2.id < 0)
assert_true(p3.id is None or p3.id < 0) assert not p3.is_valid()
assert (p3.id is None or p3.id < 0)
pe = h.Property(name="ExistentProperty", datatype="text").insert()
assert_true(pe.is_valid()) pe = h.Property(name="TestExistentProperty", datatype="text").insert()
assert pe.is_valid()
c = h.Container().extend( c = h.Container().extend(
[ [
h.Property( h.Property(
name="Non-ExistentProperty1", name="TestNon-ExistentProperty1",
datatype="text"), datatype="text"),
h.Property( h.Property(
name="Non-ExistentProperty2", name="TestNon-ExistentProperty2",
datatype="text"), datatype="text"),
h.Property( h.Property(
name="Non-ExistentProperty3", name="TestNon-ExistentProperty3",
datatype="text"), datatype="text"),
h.Property( h.Property(
name="ExistentProperty", name="TestExistentProperty",
datatype="text")]) datatype="text")])
try: with pytest.raises(TransActionError) as te:
c.insert(unique=True) c.insert(unique=True)
except UniqueNamesError as e: te = te.value
assert_equal(1, len(e.get_entities())) assert te.has_error(UniqueNamesError)
for entity in e.get_entities(): une = te.get_errors()[0].get_errors()[0]
assert_is_not_none(entity.name) assert len(une.get_entities) == 1
assert_equal(pe.name, entity.name) assert not une.get_entity() is None
assert pe.name == une.get_entity().name
finally: for p in (p1, p2, p3):
try: assert not p in te.get_all_entities()
c.delete()
except BaseException:
pass
try:
pe.delete()
except BaseException:
pass
try:
p3.delete()
except BaseException:
pass
try:
p2.delete()
except BaseException:
pass
try:
p1.delete()
except BaseException:
pass
def test_double_insertion(): def test_double_insertion():
import caosdb as h
from nose.tools import assert_true, assert_equal, assert_is_not_none # @UnresolvedImport
c1 = h.Container() c1 = h.Container()
try:
c1.append( c1.append(
h.Property( h.Property(
name="SimpleTextProperty", name="TestSimpleTextProperty",
description="simple text property (from test_error_stuff.py)", description="simple text property (from test_error_stuff.py)",
datatype='text')) datatype='text'))
c1.append( c1.append(
h.Property( h.Property(
name="SimpleDoubleProperty", name="TestSimpleDoubleProperty",
description="simple double property (from test_error_stuff.py)", description="simple double property (from test_error_stuff.py)",
datatype='double')) datatype='double'))
c1.append( c1.append(
h.Property( h.Property(
name="SimpleIntegerProperty", name="TestSimpleIntegerProperty",
description="simple integer property (from test_error_stuff.py)", description="simple integer property (from test_error_stuff.py)",
datatype='integer')) datatype='integer'))
c1.append( c1.append(
h.Property( h.Property(
name="SimpleDatetimeProperty", name="TestSimpleDatetimeProperty",
description="simple datetime property (from test_error_stuff.py)", description="simple datetime property (from test_error_stuff.py)",
datatype='datetime')) datatype='datetime'))
c1.append( c1.append(
h.RecordType( h.RecordType(
name="SimpleRecordType", name="TestSimpleRecordType",
description="simple recordType (from test_error_stuff.py)").add_property( description="simple recordType (from test_error_stuff.py)").add_property(
name='SimpleTextProperty') .add_property( name='TestSimpleTextProperty').add_property(
name='SimpleDoubleProperty') .add_property( name='TestSimpleDoubleProperty').add_property(
name='SimpleIntegerProperty') .add_property( name='TestSimpleIntegerProperty').add_property(
name='SimpleDatetimeProperty')) name='TestSimpleDatetimeProperty'))
c1.insert() c1.insert()
c2 = h.Container() c2 = h.Container()
c2.append( c2.append(
h.Property( h.Property(
name="SimpleTextProperty", name="TestSimpleTextProperty",
description="simple text property (from test_error_stuff.py)", description="simple text property (from test_error_stuff.py)",
datatype='text')) datatype='text'))
c2.append( c2.append(
h.Property( h.Property(
name="SimpleDoubleProperty", name="TestSimpleDoubleProperty",
description="simple double property (from test_error_stuff.py)", description="simple double property (from test_error_stuff.py)",
datatype='double')) datatype='double'))
c2.append( c2.append(
h.Property( h.Property(
name="SimpleIntegerProperty", name="TestSimpleIntegerProperty",
description="simple integer property (from test_error_stuff.py)", description="simple integer property (from test_error_stuff.py)",
datatype='integer')) datatype='integer'))
c2.append( c2.append(
h.Property( h.Property(
name="SimpleDatetimeProperty", name="TestSimpleDatetimeProperty",
description="simple datetime property (from test_error_stuff.py)", description="simple datetime property (from test_error_stuff.py)",
datatype='datetime')) datatype='datetime'))
c2.append( c2.append(
h.RecordType( h.RecordType(
name="SimpleRecordType", name="TestSimpleRecordType",
description="simple recordType (from test_error_stuff.py)").add_property( description="simple recordType (from test_error_stuff.py)").add_property(
name='SimpleTextProperty') .add_property( name='TestSimpleTextProperty').add_property(
name='SimpleDoubleProperty') .add_property( name='TestSimpleDoubleProperty').add_property(
name='SimpleIntegerProperty') .add_property( name='TestSimpleIntegerProperty').add_property(
name='SimpleDatetimeProperty')) name='TestSimpleDatetimeProperty'))
try: with pytest.raises(TransActionError) as te:
c2.insert() c2.insert()
except TransactionError as te: te = te.value
assert_true(isinstance(te, EntityError)) assert te.has_error(UniqueNamesError)
assert_true(isinstance(te, UniqueNamesError)) # c2 caused the ContainerError
assert_true(hasattr(te, 'get_errors')) assert te.get_errors()[0].get_entity() == c2
assert_is_not_none(te.get_errors) # exactly 5 faulty entities in c2
assert_is_not_none(te.get_errors()) assert len(te.get_errors()[0].get_entities()) == 5
assert_true(hasattr(te, 'get_error'))
assert_is_not_none(te.get_error)
assert_is_not_none(te.get_error())
assert_true(hasattr(te, 'get_entities'))
assert_is_not_none(te.get_entities)
assert_is_not_none(te.get_entities())
assert_equal(5, len(te.get_entities()))
assert_true(hasattr(te, 'get_container'))
assert_is_not_none(te.get_container)
assert_is_not_none(te.get_container())
assert_equal(c2, te.get_container())
finally:
try:
c2.delete()
except BaseException:
pass
try:
c1.delete()
except BaseException:
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment