diff --git a/semantic_router/index/base.py b/semantic_router/index/base.py
index 24fd337b237d7939898b6088ffd3d5159c9d0f34..4893987a78335f2dda3039c9929b2c8503d108d7 100644
--- a/semantic_router/index/base.py
+++ b/semantic_router/index/base.py
@@ -47,6 +47,9 @@ class BaseIndex(BaseModel):
         schema and additional metadata.
         :rtype: List[Tuple]
         """
+        if self.index is None:
+            logger.warning("Index is None, could not retrieve utterances.")
+            return []
         _, metadata = self._get_all(include_metadata=True)
         route_tuples = parse_route_info(metadata=metadata)
         return [Utterance.from_tuple(x) for x in route_tuples]
@@ -212,6 +215,9 @@ class BaseIndex(BaseModel):
         schema and additional metadata.
         :rtype: List[Tuple]
         """
+        if self.index is None:
+            logger.warning("Index is None, could not retrieve route info.")
+            return []
         _, metadata = await self._async_get_all(include_metadata=True)
         route_info = parse_route_info(metadata=metadata)
         return route_info  # type: ignore
diff --git a/semantic_router/index/pinecone.py b/semantic_router/index/pinecone.py
index 5b2cdcd811676d67edf244b44e9066c912e5b5ec..11e33885595a6f050d300b161e0d3049ac2e1d3f 100644
--- a/semantic_router/index/pinecone.py
+++ b/semantic_router/index/pinecone.py
@@ -492,6 +492,7 @@ class PineconeIndex(BaseIndex):
 
     def delete_index(self):
         self.client.delete_index(self.index_name)
+        self.index = None
 
     # __ASYNC CLIENT METHODS__
     async def _async_query(
diff --git a/tests/unit/test_layer.py b/tests/unit/test_layer.py
index 1cb35be8ee7804efac44982d395b34068439af80..67102f7c213ea78e5258440603ea692f86e2e125 100644
--- a/tests/unit/test_layer.py
+++ b/tests/unit/test_layer.py
@@ -232,24 +232,26 @@ class TestIndexEncoders:
         route_layer_none = RouteLayer(encoder=None)
         assert route_layer_none.score_threshold == openai_encoder.score_threshold
 
+
+@pytest.mark.parametrize("index_cls", get_test_indexes())
+class TestRouteLayer:
     def test_initialization_dynamic_route(
-        self, encoder_cls, dynamic_routes, index_cls
+        self, dynamic_routes, index_cls
     ):
         index = init_index(index_cls)
-        encoder = encoder_cls()
         route_layer = RouteLayer(
-            encoder=encoder, routes=dynamic_routes, index=index,
-            auto_sync="local" if index_cls is PineconeIndex else None,
+            encoder=openai_encoder, routes=dynamic_routes, index=index,
+            auto_sync="local",
         )
-        assert route_layer.score_threshold == encoder.score_threshold
-
+        assert route_layer.score_threshold == openai_encoder.score_threshold
 
-@pytest.mark.parametrize("index_cls", get_test_indexes())
-class TestRouteLayer:
     def test_delete_index(self, openai_encoder, routes, index_cls):
         # TODO merge .delete_index() and .delete_all() and get working
         index = init_index(index_cls)
-        route_layer = RouteLayer(encoder=openai_encoder, routes=routes, index=index)
+        route_layer = RouteLayer(
+            encoder=openai_encoder, routes=routes, index=index,
+            auto_sync="local",
+        )
         if index_cls is PineconeIndex:
             time.sleep(PINECONE_SLEEP)  # allow for index to be populated
         route_layer.index.delete_index()