|
| 1 | +from typing import List, Optional |
| 2 | + |
1 | 3 | from ravendb.documents.commands.crud import GetDocumentsCommand |
| 4 | +from ravendb.documents.operations.counters import GetCountersOperation |
2 | 5 | from ravendb.infrastructure.entities import User |
3 | 6 | from ravendb.tests.test_base import TestBase |
4 | 7 |
|
@@ -41,3 +44,36 @@ def test_get_documents_command_should_discard_null_ids(self): |
41 | 44 | self.assertEqual(101, len(command.result.results)) |
42 | 45 | command.result.results.sort(key=lambda x: x is None) |
43 | 46 | self.assertIsNone(command.result.results[len(command.result.results) - 1]) |
| 47 | + |
| 48 | + def test_get_counter_operations_should_discard_null_counters(self): |
| 49 | + key = "users/2" |
| 50 | + |
| 51 | + counter_names: List[Optional[str]] = [None] * 124 |
| 52 | + with self.store.open_session() as session: |
| 53 | + session.store(User(), key) |
| 54 | + |
| 55 | + c = session.counters_for(key) |
| 56 | + for i in range(100): |
| 57 | + name = f"likes{i}" |
| 58 | + counter_names.append(name) |
| 59 | + c.increment(name) |
| 60 | + |
| 61 | + session.save_changes() |
| 62 | + |
| 63 | + vals = self.store.operations.send(GetCountersOperation(key, counter_names)) |
| 64 | + self.assertEqual(101, len(vals.counters)) |
| 65 | + vals.counters = sorted(vals.counters, key=lambda x: x is not None, reverse=True) |
| 66 | + for counter in vals.counters[0:100]: |
| 67 | + self.assertEqual(1, counter.total_value) |
| 68 | + |
| 69 | + self.assertIsNone(vals.counters[len(vals.counters) - 1]) |
| 70 | + |
| 71 | + # test with return_full_results = True |
| 72 | + vals = self.store.operations.send(GetCountersOperation(key, counter_names, True)) |
| 73 | + |
| 74 | + self.assertEqual(101, len(vals.counters)) |
| 75 | + vals.counters = sorted(vals.counters, key=lambda x: x is not None, reverse=True) |
| 76 | + for counter in vals.counters[0:100]: |
| 77 | + self.assertEqual(1, len(counter.counter_values)) |
| 78 | + |
| 79 | + self.assertIsNone(vals.counters[len(vals.counters) - 1]) |
0 commit comments