Skip to content

Commit 92b6902

Browse files
committed
Issue-198 Unable to create documents with server generated UUID's
1 parent 47cfa26 commit 92b6902

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

ravendb/documents/session/document_session_operations/in_memory_document_session_operations.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@ def increment_requests_count(self) -> None:
710710
)
711711

712712
def _assert_no_non_unique_instance(self, entity: object, key: str) -> None:
713-
if (not key) or key[-1] == "|" or key[-1] == self.conventions.identity_parts_separator:
713+
if not key or key[-1] == "|" or key[-1] == self.conventions.identity_parts_separator:
714714
return
715715

716716
info = self._documents_by_id.get(key)
@@ -931,7 +931,7 @@ def _store_entity_in_unit_of_work(
931931
document=None,
932932
)
933933
self._documents_by_entity[entity] = document_info
934-
if key:
934+
if key is not None:
935935
self._documents_by_id[key] = document_info
936936

937937
def prepare_for_save_changes(self) -> SaveChangesData:
@@ -1882,7 +1882,8 @@ def update_entity_document_info(self, document_info: DocumentInfo, document: dic
18821882

18831883
def clear_session_state_after_successful_save_changes(self):
18841884
for key in self.__documents_by_id_to_remove:
1885-
self.__session._documents_by_id.pop(key)
1885+
if key in self.__session.documents_by_id:
1886+
self.__session._documents_by_id.pop(key)
18861887
for key in self.__documents_by_entity_to_remove:
18871888
self.__session._documents_by_entity.pop(key)
18881889

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from ravendb.tests.test_base import TestBase
2+
3+
4+
class Product:
5+
def __init__(self, name: str = None):
6+
self.name = name
7+
self.Id = ""
8+
9+
10+
class TestIssue198(TestBase):
11+
def setUp(self):
12+
super().setUp()
13+
14+
def test_create_document_with_server_generated_guid(self):
15+
guid_from_server = None
16+
with self.store.open_session() as session:
17+
product = Product("Test")
18+
session.store(product)
19+
session.save_changes()
20+
guid_from_server = product.Id
21+
22+
with self.store.open_session() as session:
23+
product = session.load(guid_from_server)
24+
self.assertEqual("Test", product.name)
25+
26+
def test_can_create_multiple_documents_with_server_generated_guid(self):
27+
with self.store.open_session() as session:
28+
product1 = Product("Test1")
29+
product2 = Product("Test2")
30+
product3 = Product("Test3")
31+
session.store(product1)
32+
session.store(product2)
33+
session.store(product3)
34+
session.save_changes()
35+
guid_from_server1 = product1.Id
36+
guid_from_server2 = product2.Id
37+
guid_from_server3 = product3.Id
38+
39+
with self.store.open_session() as session:
40+
product1 = session.load(guid_from_server1)
41+
self.assertEqual("Test1", product1.name)
42+
43+
product2 = session.load(guid_from_server2)
44+
self.assertEqual("Test2", product2.name)
45+
46+
product3 = session.load(guid_from_server3)
47+
self.assertEqual("Test3", product3.name)

0 commit comments

Comments
 (0)