1+ from ravendb .infrastructure .orders import Company
2+ from ravendb .primitives import constants
13from ravendb .tests .test_base import TestBase
24
35
@@ -22,6 +24,28 @@ def test_create_document_with_server_generated_guid(self):
2224 with self .store .open_session () as session :
2325 product = session .load (guid_from_server )
2426 self .assertEqual ("Test" , product .name )
27+ metadata_id = session .advanced .get_metadata_for (product )["@id" ]
28+ identity = session .advanced .get_document_id (product )
29+ id_prop = product .Id
30+
31+ self .assertEqual (id_prop , identity )
32+ self .assertEqual (id_prop , metadata_id )
33+ self .assertEqual (id_prop , guid_from_server )
34+
35+ with self .store .open_session () as session :
36+ product = session .load (guid_from_server )
37+ product .Id = ""
38+ session .save_changes ()
39+
40+ with self .store .open_session () as session :
41+ product = session .load (guid_from_server )
42+ metadata_id1 = session .advanced .get_metadata_for (product )[constants .Documents .Metadata .ID ]
43+ identity1 = session .advanced .get_document_id (product )
44+ id_prop1 = product .Id
45+
46+ self .assertEqual (id_prop , id_prop1 )
47+ self .assertEqual (id_prop , metadata_id1 )
48+ self .assertEqual (id_prop , identity1 )
2549
2650 def test_can_create_multiple_documents_with_server_generated_guid (self ):
2751 with self .store .open_session () as session :
@@ -45,3 +69,40 @@ def test_can_create_multiple_documents_with_server_generated_guid(self):
4569
4670 product3 = session .load (guid_from_server3 )
4771 self .assertEqual ("Test3" , product3 .name )
72+
73+ def test_preserve_id_field (self ):
74+ with self .store .open_session () as session :
75+ company = Company (Id = "companies/222" , name = "Apple Inc." )
76+ session .store (company )
77+ session .save_changes ()
78+
79+ with self .store .open_session () as session :
80+ company = session .load ("companies/222" , Company )
81+ self .assertEqual ("companies/222" , company .Id )
82+ self .assertEqual ("Apple Inc." , company .name )
83+
84+ def test_docs_loaded_as_dictionary_dont_have_id_entry_and_its_id_is_available_via_metadata (self ):
85+ with self .store .open_session () as session :
86+ company = Company (Id = "companies/1" , name = "A Inc." )
87+ company_dict = {"Id" : "companies/dict" , "name" : "Dict Inc." }
88+ session .store (company )
89+ session .store (company_dict )
90+ session .save_changes ()
91+
92+ with self .store .open_session () as session :
93+ company = session .load ("companies/1" , Company )
94+ company_dict = session .load ("companies/dict" , dict )
95+
96+ self .assertNotIn ("Id" , company_dict )
97+ self .assertEqual ("companies/dict" , session .advanced .get_document_id (company_dict ))
98+ self .assertEqual ("companies/dict" , session .advanced .get_metadata_for (company_dict )["@id" ])
99+
100+ self .assertEqual ("companies/1" , company .Id )
101+ self .assertEqual ("companies/1" , session .advanced .get_document_id (company ))
102+ self .assertEqual ("companies/1" , session .advanced .get_metadata_for (company )["@id" ])
103+
104+ with self .store .open_session () as session :
105+ company_dict_as_company_object = session .load ("companies/dict" , Company )
106+ self .assertEqual ("companies/dict" , company_dict_as_company_object .Id )
107+ self .assertEqual ("companies/dict" , session .advanced .get_document_id (company_dict_as_company_object ))
108+ self .assertEqual ("companies/dict" , session .advanced .get_metadata_for (company_dict_as_company_object )["@id" ])
0 commit comments