From f2896786f7d4078081b2cfcab96f3207e2d19992 Mon Sep 17 00:00:00 2001 From: Gabriel Grubba <70247653+Grubba27@users.noreply.github.com> Date: Wed, 29 Nov 2023 16:09:01 -0300 Subject: [PATCH] Feat: zodern solution to stubvalue promise --- .../ddp-client/common/livedata_connection.js | 12 ++++++---- packages/ddp-client/package.js | 1 + .../test/livedata_callAsync_tests.js | 24 +++++++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 packages/ddp-client/test/livedata_callAsync_tests.js diff --git a/packages/ddp-client/common/livedata_connection.js b/packages/ddp-client/common/livedata_connection.js index 19e2f2680b..0bff0d6df2 100644 --- a/packages/ddp-client/common/livedata_connection.js +++ b/packages/ddp-client/common/livedata_connection.js @@ -893,11 +893,13 @@ export class Connection { if (options.returnServerPromise) { return future; } - return options.returnStubValue - ? future.then(() => stubReturnValue) - : { - stubValuePromise: future, - }; + + if (options.returnStubValue) { + return future.then(() => stubReturnValue); + } + + future.stub = stubReturnValue; + return future; } return options.returnStubValue ? stubReturnValue : undefined; } diff --git a/packages/ddp-client/package.js b/packages/ddp-client/package.js index 2a489abadd..b5a729e39d 100644 --- a/packages/ddp-client/package.js +++ b/packages/ddp-client/package.js @@ -60,4 +60,5 @@ Package.onTest((api) => { api.addFiles('test/livedata_tests.js'); api.addFiles('test/livedata_test_service.js'); api.addFiles('test/random_stream_tests.js'); + api.addFiles('test/livedata_callAsync_tests.js'); }); diff --git a/packages/ddp-client/test/livedata_callAsync_tests.js b/packages/ddp-client/test/livedata_callAsync_tests.js new file mode 100644 index 0000000000..8025c1fc09 --- /dev/null +++ b/packages/ddp-client/test/livedata_callAsync_tests.js @@ -0,0 +1,24 @@ +if (Meteor.isServer) { + Meteor.methods({ + "server-only"() { + return "result"; + }, + }); +} + +Meteor.methods({ + "client-only"() { + return "result"; + }, +}); + +Tinytest.addAsync( + "livedata stub - callAsync works like in 2.x", + async function (t) { + let result = await Meteor.callAsync("server-only"); + t.equal(result, "result"); + + result = await Meteor.callAsync("client-only"); + t.equal(result, "result"); + } +);