Skip to content

Commit 9b9d259

Browse files
committed
RDBC-698 TimeSeriesIncludesTest::includeTimeSeriesAndUpdateExistingRangeInCache
1 parent 2917e25 commit 9b9d259

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

ravendb/tests/jvm_migrated_tests/client_tests/time_series_tests/test_time_series_includes.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import datetime, timedelta
22

3+
from ravendb.infrastructure.orders import Company, Order
34
from ravendb.tests.test_base import TestBase, User
45

56

@@ -93,3 +94,106 @@ def test_should_cache_empty_time_series_ranges(self):
9394

9495
self.assertEqual(base_line + timedelta(minutes=10), ranges[0].from_date)
9596
self.assertEqual(base_line + timedelta(minutes=30), ranges[0].to_date)
97+
98+
def test_session_load_with_include_time_series(self):
99+
base_line = datetime(2023, 8, 20, 21, 30)
100+
101+
with self.store.open_session() as session:
102+
company = Company(name="HR")
103+
session.store(company, "companies/1-A")
104+
105+
order = Order(company="companies/1-A")
106+
session.store(order, "orders/1-A")
107+
108+
tsf = session.time_series_for("orders/1-A", "Heartrate")
109+
tsf.append_single(base_line, 67, "watches/apple")
110+
tsf.append_single(base_line + timedelta(minutes=5), 64, "watches/apple")
111+
tsf.append_single(base_line + timedelta(minutes=10), 65, "watches/fitbit")
112+
113+
session.save_changes()
114+
115+
with self.store.open_session() as session:
116+
order = session.load(
117+
"orders/1-A", Order, lambda i: i.include_documents("company").include_time_series("Heartrate")
118+
)
119+
120+
company = session.load(order.company, Company)
121+
self.assertEqual("HR", company.name)
122+
123+
# should not go to server
124+
values = session.time_series_for_entity(order, "Heartrate").get()
125+
126+
self.assertEqual(3, len(values))
127+
128+
self.assertEqual(1, len(values[0].values))
129+
self.assertEqual(67, values[0].values[0])
130+
self.assertEqual("watches/apple", values[0].tag)
131+
self.assertEqual(base_line, values[0].timestamp)
132+
133+
self.assertEqual(1, len(values[1].values))
134+
self.assertEqual(64, values[1].values[0])
135+
self.assertEqual("watches/apple", values[1].tag)
136+
self.assertEqual(base_line + timedelta(minutes=5), values[1].timestamp)
137+
138+
self.assertEqual(1, len(values[2].values))
139+
self.assertEqual(65, values[2].values[0])
140+
self.assertEqual("watches/fitbit", values[2].tag)
141+
self.assertEqual(base_line + timedelta(minutes=10), values[2].timestamp)
142+
143+
self.assertEqual(1, session.advanced.number_of_requests)
144+
145+
def test_include_time_series_and_update_existing_range_in_cache(self):
146+
document_id = "users/gracjan"
147+
base_line = datetime(2023, 8, 20, 21, 30)
148+
149+
with self.store.open_session() as session:
150+
user = User(name="Gracjan")
151+
session.store(user, document_id)
152+
session.save_changes()
153+
154+
with self.store.open_session() as session:
155+
tsf = session.time_series_for(document_id, "Heartrate")
156+
for i in range(360):
157+
tsf.append_single(base_line + timedelta(seconds=10 * i), 6, "watches/fitbit")
158+
159+
session.save_changes()
160+
161+
with self.store.open_session() as session:
162+
vals = session.time_series_for(document_id, "Heartrate").get(
163+
base_line + timedelta(minutes=2), base_line + timedelta(minutes=10)
164+
)
165+
166+
self.assertEqual(1, session.advanced.number_of_requests)
167+
168+
self.assertEqual(49, len(vals))
169+
self.assertEqual(base_line + timedelta(minutes=2), vals[0].timestamp)
170+
self.assertEqual(base_line + timedelta(minutes=10), vals[48].timestamp)
171+
172+
session.time_series_for(document_id, "Heartrate").append_single(
173+
base_line + timedelta(minutes=3, seconds=3), 6, "watches/fitbit"
174+
)
175+
session.save_changes()
176+
177+
self.assertEqual(2, session.advanced.number_of_requests)
178+
179+
user = session.load(
180+
document_id,
181+
User,
182+
lambda i: i.include_time_series(
183+
"Heartrate", base_line + timedelta(minutes=3), base_line + timedelta(minutes=5)
184+
),
185+
)
186+
187+
self.assertEqual(3, session.advanced.number_of_requests)
188+
189+
# should not go to server
190+
191+
vals = session.time_series_for(document_id, "Heartrate").get(
192+
base_line + timedelta(minutes=3), base_line + timedelta(minutes=5)
193+
)
194+
195+
self.assertEqual(14, len(vals))
196+
197+
self.assertEqual(base_line + timedelta(minutes=3), vals[0].timestamp)
198+
self.assertEqual(base_line + timedelta(minutes=3, seconds=3), vals[1].timestamp)
199+
self.assertEqual(base_line + timedelta(minutes=5), vals[13].timestamp)

0 commit comments

Comments
 (0)