diff --git a/unittests/test_entity.py b/unittests/test_entity.py
index 73b65df9d4347d13da8c673fbdd7ddbd39cd616e..87ae606ce10db7ce4411e929d66a54bc19c2dffd 100644
--- a/unittests/test_entity.py
+++ b/unittests/test_entity.py
@@ -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)