From 8c2f881077c4bb40ac11a358d517fa5d7e5b5ac6 Mon Sep 17 00:00:00 2001
From: Joscha Schmiedt <joscha@schmiedt.dev>
Date: Mon, 26 Feb 2024 15:06:53 +0100
Subject: [PATCH] Handle single element slices for Container.__getitem__

---
 src/linkahead/common/models.py | 6 +++++-
 unittests/test_container.py    | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/linkahead/common/models.py b/src/linkahead/common/models.py
index a7030d95..9644485a 100644
--- a/src/linkahead/common/models.py
+++ b/src/linkahead/common/models.py
@@ -3003,7 +3003,11 @@ class Container(list):
 
     def __getitem__(self, key):
         # Construct new Container from list slice
-        return Container().extend(super().__getitem__(key))
+        self_as_list_slice = super().__getitem__(key)
+        if isinstance(self_as_list_slice, list):
+            return Container().extend(self_as_list_slice)
+        else:
+            return self_as_list_slice
 
     @staticmethod
     def from_xml(xml_str):
diff --git a/unittests/test_container.py b/unittests/test_container.py
index 026f6424..cfada7cc 100644
--- a/unittests/test_container.py
+++ b/unittests/test_container.py
@@ -187,4 +187,8 @@ def test_container_slicing():
     container_slice = cont[:2]
     assert isinstance(container_slice, db.common.models.Container), \
         f"Container slice should be Container, was {type(container_slice)}"
-    # cont[:2].retrieve()
+    for element in container_slice:
+        assert isinstance(element, db.Record), \
+            f"element in slice was not Record, but {type(element)}"
+    assert len(container_slice) == 2
+    assert cont[-1].name == "TestRec5"
-- 
GitLab