Skip to content
Snippets Groups Projects

Allow property and parent lists to be filtered.

Merged Henrik tom Wörden requested to merge f-lists into dev
3 unresolved threads
1 file
+ 46
3
Compare changes
  • Side-by-side
  • Inline
+ 46
3
@@ -25,6 +25,7 @@
import os
# pylint: disable=missing-docstring
import unittest
from pytest import raises
import linkahead
from linkahead import (INTEGER, Entity, Property, Record, RecordType,
@@ -105,20 +106,62 @@ def test_parent_list():
pl = linkahead.common.models.ParentList([p1])
assert p1 in pl
assert RecordType(name="A") in pl
assert not RecordType(id=101) in pl
assert pl.index(RecordType(name="A")) == 0
assert RecordType(id=101) not in pl
pl.append(RecordType(id=101))
assert RecordType(name="A") in pl
assert RecordType(id=101) in pl
assert not RecordType(id=102) in pl
assert len(pl) == 2
assert pl.index(RecordType(id=101))
assert RecordType(id=102) not in pl
pl.append(RecordType(id=103, name='B'))
assert RecordType(name="A") in pl
assert RecordType(name="B") in pl
assert RecordType(id=101) in pl
assert RecordType(id=103) in pl
assert not RecordType(id=105, name="B") in pl
assert len(pl) == 3
assert pl.index(RecordType(id=103, name='B')) == 2
assert pl.index(RecordType(id=103)) == 2
assert pl.index(RecordType(name='B')) == 2
assert RecordType(id=105, name="B") not in pl
# test removal
# remove by id only, even though element in parent list has name and id
pl.remove(RecordType(id=103))
assert len(pl) == 2
assert RecordType(name='B') not in pl
assert RecordType(id=103) not in pl
# Same for removal by name
pl.append(RecordType(id=103, name='B'))
assert len(pl) == 3
pl.remove(RecordType(name='B'))
assert len(pl) == 2
assert RecordType(name='B') not in pl
assert RecordType(id=103) not in pl
# And an error if the element is wrongly specified
pl.append(RecordType(id=103, name='B'))
assert len(pl) == 3
with raises(ValueError) as ve:
pl.remove(RecordType(id=105, name='B'))
assert "not in list" in str(ve.value)
assert len(pl) == 3
with raises(ValueError) as ve:
pl.remove(RecordType(id=103, name='C'))
assert "not in list" in str(ve.value)
assert len(pl) == 3
# TODO also check other built-in list functions: insert, pop, clear, count
# TODO also check pl1 == pl2
# TODO what is with RecordType(name='A', id=100) in pl? I.e., fitting name,
# but id of corresponding element in pl is None. Same of course for
# RecordType(name='C', id=101) in pl, i.e. fitting id, but name of element
# in pl is None.
# TODO what is with the ambiguous RecordType(name='A', id=101) in pl?
def test_property_list():
# TODO: Resolve parent-list TODOs, the transfer to here.
# TODO: What other considerations have to be done with properties?
p1 = Property(name="A")
pl = linkahead.common.models.PropertyList()
pl.append(p1)
Loading