Skip to content

Commit b76fb8d

Browse files
committed
RDBC-685 SessionCountersTest::sessionIncludeCountersShouldRegisterMissingCounters
1 parent 32e323b commit b76fb8d

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed

ravendb/documents/session/in_memory_document_session_operations.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ def __init__(self, store: "DocumentStore", key: uuid.UUID, options: SessionOptio
459459
self._included_documents_by_id = CaseInsensitiveDict()
460460
self._documents_by_entity: DocumentsByEntityHolder = DocumentsByEntityHolder()
461461

462-
self._counters_by_doc_id: Dict[str, List[Dict[str, int]]] = {}
462+
self._counters_by_doc_id: Dict[str, List[Dict[str, int]]] = CaseInsensitiveDict()
463463
self._time_series_by_doc_id: Dict[str, Dict[str, List[TimeSeriesRangeResult]]] = {}
464464

465465
self._deleted_entities: Union[
@@ -1367,8 +1367,8 @@ def __register_missing_counters_for_keys(self, keys: List[str], counters_to_incl
13671367

13681368
for counter in counters_to_include:
13691369
for key in keys:
1370-
cache = self._counters_by_doc_id.get(key)
1371-
if not cache:
1370+
cache = self._counters_by_doc_id.get(key, None)
1371+
if cache is None:
13721372
cache = [False, CaseInsensitiveDict()]
13731373
self._counters_by_doc_id[key] = cache
13741374

ravendb/documents/session/loaders/include.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ def include_counter(self, *names: str) -> IncludeBuilderBase:
117117
self._include_counters("", [names] if isinstance(names, str) else names)
118118
return self
119119

120+
def include_counters(self, names: List[str]) -> IncludeBuilderBase:
121+
self.include_counter(*names)
122+
return self
123+
120124
def include_all_counters(self) -> IncludeBuilderBase:
121125
self._include_all_counters("")
122126
return self

ravendb/tests/jvm_migrated_tests/client_tests/counters_tests/test_session_counters.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,3 +781,39 @@ def test_session_include_all_counters(self):
781781
self.assertIn(("downloads", 300), dic.items())
782782

783783
self.assertEqual(1, session.advanced.number_of_requests)
784+
785+
def test_session_include_counters_should_register_missing_counters(self):
786+
with self.store.open_session() as session:
787+
session.store(Company(name="HR"), "companies/1-A")
788+
session.store(Order(company="companies/1-A"), "orders/1-A")
789+
session.counters_for("orders/1-A").increment("likes", 100)
790+
session.counters_for("orders/1-A").increment("dislikes", 200)
791+
session.counters_for("orders/1-A").increment("downloads", 300)
792+
session.save_changes()
793+
794+
with self.store.open_session() as session:
795+
order = session.load(
796+
"orders/1-A",
797+
Order,
798+
lambda i: i.include_documents("company")
799+
.include_counters(["likes", "downloads", "dances"])
800+
.include_counter("dislikes")
801+
.include_counter("cats"),
802+
)
803+
804+
company = session.load(order.company, Company)
805+
self.assertEqual("HR", company.name)
806+
807+
# should not go to server
808+
dic = session.counters_for_entity(order).get_all()
809+
self.assertEqual(1, session.advanced.number_of_requests)
810+
811+
self.assertEqual(5, len(dic))
812+
self.assertIn(("likes", 100), dic.items())
813+
self.assertIn(("dislikes", 200), dic.items())
814+
self.assertIn(("downloads", 300), dic.items())
815+
self.assertIsNone(dic.get("dances"))
816+
self.assertIsNone(dic.get("cats"))
817+
818+
self.assertEqual(1, session.advanced.number_of_requests)
819+

0 commit comments

Comments
 (0)