|
1 | 1 | import uuid |
2 | 2 |
|
3 | | -from ravendb.infrastructure.orders import Company, Order |
| 3 | +from ravendb.infrastructure.orders import Company, Order, Employee |
4 | 4 | from ravendb.serverwide.database_record import DatabaseRecord |
5 | 5 | from ravendb.serverwide.operations.common import CreateDatabaseOperation, DeleteDatabaseOperation |
6 | 6 | from ravendb.documents.operations.counters import ( |
@@ -817,3 +817,43 @@ def test_session_include_counters_should_register_missing_counters(self): |
817 | 817 |
|
818 | 818 | self.assertEqual(1, session.advanced.number_of_requests) |
819 | 819 |
|
| 820 | + def test_session_chained_include_and_include_counter(self): |
| 821 | + with self.store.open_session() as session: |
| 822 | + company = Company(name="HR") |
| 823 | + session.store(company, "companies/1-A") |
| 824 | + |
| 825 | + employee = Employee(first_name="Aviv") |
| 826 | + session.store(employee, "employees/1-A") |
| 827 | + |
| 828 | + order = Order(company="companies/1-A", employee="employees/1-A") |
| 829 | + session.store(order, "orders/1-A") |
| 830 | + |
| 831 | + session.counters_for("orders/1-A").increment("likes", 100) |
| 832 | + session.counters_for("orders/1-A").increment("dislikes", 200) |
| 833 | + session.counters_for("orders/1-A").increment("downloads", 300) |
| 834 | + session.save_changes() |
| 835 | + |
| 836 | + with self.store.open_session() as session: |
| 837 | + order = session.load( |
| 838 | + "orders/1-A", |
| 839 | + Order, |
| 840 | + lambda i: i.include_counter("likes") |
| 841 | + .include_documents("company") |
| 842 | + .include_counter("dislikes") |
| 843 | + .include_counter("downloads") |
| 844 | + .include_documents("employee"), |
| 845 | + ) |
| 846 | + |
| 847 | + company = session.load(order.company, Company) |
| 848 | + self.assertEqual("HR", company.name) |
| 849 | + |
| 850 | + employee = session.load(order.employee, Employee) |
| 851 | + self.assertEqual("Aviv", employee.first_name) |
| 852 | + |
| 853 | + dic = session.counters_for_entity(order).get_all() |
| 854 | + self.assertEqual(3, len(dic)) |
| 855 | + self.assertIn(("likes", 100), dic.items()) |
| 856 | + self.assertIn(("dislikes", 200), dic.items()) |
| 857 | + self.assertIn(("downloads", 300), dic.items()) |
| 858 | + |
| 859 | + self.assertEqual(1, session.advanced.number_of_requests) |
0 commit comments