summaryrefslogtreecommitdiffstats
path: root/tests/python/notifications/test_progress.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/python/notifications/test_progress.py')
-rw-r--r--tests/python/notifications/test_progress.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/python/notifications/test_progress.py b/tests/python/notifications/test_progress.py
new file mode 100644
index 0000000..3f7e918
--- /dev/null
+++ b/tests/python/notifications/test_progress.py
@@ -0,0 +1,91 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import json
+
+import hamcrest
+import jsonrpc
+import pytest
+
+from lsprotocol.types import (
+ ProgressNotification,
+ ProgressParams,
+ WorkDoneProgressBegin,
+ WorkDoneProgressEnd,
+ WorkDoneProgressReport,
+)
+
+
+@pytest.mark.parametrize(
+ "obj, expected",
+ [
+ (
+ ProgressNotification(
+ params=ProgressParams(
+ token="id1",
+ value=WorkDoneProgressBegin(title="Begin Progress", percentage=0),
+ )
+ ),
+ json.dumps(
+ {
+ "params": {
+ "token": "id1",
+ "value": {
+ "title": "Begin Progress",
+ "kind": "begin",
+ "percentage": 0,
+ },
+ },
+ "method": "$/progress",
+ "jsonrpc": "2.0",
+ }
+ ),
+ ),
+ (
+ ProgressNotification(
+ params=ProgressParams(
+ token="id1",
+ value=WorkDoneProgressReport(message="Still going", percentage=50),
+ )
+ ),
+ json.dumps(
+ {
+ "params": {
+ "token": "id1",
+ "value": {
+ "kind": "report",
+ "message": "Still going",
+ "percentage": 50,
+ },
+ },
+ "method": "$/progress",
+ "jsonrpc": "2.0",
+ }
+ ),
+ ),
+ (
+ ProgressNotification(
+ params=ProgressParams(
+ token="id1",
+ value=WorkDoneProgressEnd(message="Finished"),
+ )
+ ),
+ json.dumps(
+ {
+ "params": {
+ "token": "id1",
+ "value": {
+ "kind": "end",
+ "message": "Finished",
+ },
+ },
+ "method": "$/progress",
+ "jsonrpc": "2.0",
+ }
+ ),
+ ),
+ ],
+)
+def test_exit_serialization(obj, expected):
+ actual_str = jsonrpc.to_json(obj)
+ hamcrest.assert_that(actual_str, hamcrest.is_(expected))