@@ -80,3 +80,29 @@ def test_preserve_id_field(self):
8080 company = session .load ("companies/222" , Company )
8181 self .assertEqual ("companies/222" , company .Id )
8282 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