Skip to content

Commit 44f6a7a

Browse files
Add test for document dirty attribute (#251)
* Add test for document dirty attribute * Add rtc_document_save_delay fixture
1 parent 35db22e commit 44f6a7a

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed

pyproject.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ test = [
4848
"jupyter_server_fileid[test]",
4949
"pytest>=7.0",
5050
"pytest-cov",
51-
"websockets"
51+
"websockets",
52+
"importlib_metadata >=3.6; python_version<'3.10'",
5253
]
5354
docs = [
5455
"jupyterlab>=4.0.0",

tests/conftest.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@
2323

2424

2525
@pytest.fixture
26-
def jp_server_config(jp_root_dir, jp_server_config):
26+
def rtc_document_save_delay():
27+
return 1
28+
29+
30+
@pytest.fixture
31+
def jp_server_config(jp_root_dir, jp_server_config, rtc_document_save_delay):
2732
return {
2833
"ServerApp": {
2934
"jpserver_extensions": {"jupyter_collaboration": True, "jupyter_server_fileid": True},
@@ -37,6 +42,7 @@ def jp_server_config(jp_root_dir, jp_server_config):
3742
"db_path": str(jp_root_dir.joinpath(".fid_test.db")),
3843
"db_journal_mode": "OFF",
3944
},
45+
"YDocExtension": {"document_save_delay": rtc_document_save_delay},
4046
}
4147

4248

tests/test_documents.py

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Copyright (c) Jupyter Development Team.
2+
# Distributed under the terms of the Modified BSD License.
3+
4+
import sys
5+
6+
if sys.version_info < (3, 10):
7+
from importlib_metadata import entry_points
8+
else:
9+
from importlib.metadata import entry_points
10+
11+
import pytest
12+
from anyio import sleep
13+
from pycrdt_websocket import WebsocketProvider
14+
15+
jupyter_ydocs = {ep.name: ep.load() for ep in entry_points(group="jupyter_ydoc")}
16+
17+
18+
@pytest.fixture
19+
def rtc_document_save_delay():
20+
return 0.5
21+
22+
23+
async def test_dirty(
24+
rtc_create_file,
25+
rtc_connect_doc_client,
26+
rtc_document_save_delay,
27+
):
28+
file_format = "text"
29+
file_type = "file"
30+
file_path = "dummy.txt"
31+
await rtc_create_file(file_path)
32+
jupyter_ydoc = jupyter_ydocs[file_type]()
33+
34+
async with await rtc_connect_doc_client(file_format, file_type, file_path) as ws:
35+
async with WebsocketProvider(jupyter_ydoc.ydoc, ws):
36+
for _ in range(2):
37+
jupyter_ydoc.dirty = True
38+
await sleep(rtc_document_save_delay * 1.5)
39+
assert not jupyter_ydoc.dirty

0 commit comments

Comments
 (0)