@reventlessdev/reventless-local 3.0.0-alpha.248 → 3.0.0-alpha.250

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.json +14 -14
  3. package/src/BakedManifest.res +5 -6
  4. package/src/EmitCapabilities.res +3 -1
  5. package/src/LocalPlatformRegistry.res +3 -1
  6. package/src/LocalPlatformStart.res +7 -6
  7. package/src/LocalSeedTarget.res +3 -1
  8. package/src/Platform.res +291 -215
  9. package/src/ShellConfig.res +10 -17
  10. package/src/UiHints.res +8 -14
  11. package/src/UiSlots.res +10 -17
  12. package/src/adapter/Api/LocalEvents_Server.res +5 -3
  13. package/src/adapter/Api/LocalGraphQL_Adapter.res +4 -4
  14. package/src/adapter/Auth/LocalAuth.res +11 -15
  15. package/src/adapter/Auth/UserStore.res +5 -7
  16. package/src/adapter/Backend.res +1 -2
  17. package/src/adapter/CommandGenerator/CommandGeneratorResolvers_GraphQL.res +42 -26
  18. package/src/adapter/CommandGenerator/InboundTranslationResolvers_GraphQL.res +13 -3
  19. package/src/adapter/CommandTopic/LocalCommandTopicChannel.res +15 -17
  20. package/src/adapter/CommandTopic/LocalCommandTopicRemoteChannel.res +18 -22
  21. package/src/adapter/Counter/LocalCounterHandler.res +1 -1
  22. package/src/adapter/DcbEventLog/DcbEventLogStorage_InMemory.res +33 -22
  23. package/src/adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res +57 -57
  24. package/src/adapter/DomainGraphQL_Server.res +35 -34
  25. package/src/adapter/DomainMCP_Server.res +45 -41
  26. package/src/adapter/EventCollector/LocalEventCollectorChannel.res +47 -36
  27. package/src/adapter/EventHistory/EventHistoryResolvers_GraphQL.res +15 -12
  28. package/src/adapter/EventLog/EventLogStorage_InMemory.res +9 -4
  29. package/src/adapter/EventLog/EventLogStorage_Sqlite.res +36 -24
  30. package/src/adapter/EventTopic/LocalEventTopicPublisher.res +9 -3
  31. package/src/adapter/Heartbeat/LocalHeartbeatRunner.res +9 -14
  32. package/src/adapter/LocalBus.res +12 -12
  33. package/src/adapter/LocalCapabilities.res.mjs +1 -1
  34. package/src/adapter/LocalGeocodeResolvers.res +1 -4
  35. package/src/adapter/LocalSideEffectHandler.res +1 -1
  36. package/src/adapter/LocalStateChangeDescriptor.res +2 -1
  37. package/src/adapter/MCP_ServerInstance.res +51 -39
  38. package/src/adapter/ObjectStore/LocalObjectStore.res +5 -2
  39. package/src/adapter/ObjectStore/ObjectStoreStorage_FileSystem.res +1 -2
  40. package/src/adapter/PlatformGraphQL_Server.res +9 -5
  41. package/src/adapter/ProjectionCheckpoint.res +8 -1
  42. package/src/adapter/ProjectionPending.res +1 -3
  43. package/src/adapter/QueryDb/LocalQueryDbStorage.res +2 -1
  44. package/src/adapter/QueryDb/QueryDbResolvers_GraphQL.res +367 -269
  45. package/src/adapter/QueryDb/QueryDbStorage_InMemory.res +5 -3
  46. package/src/adapter/QueryDb/QueryDbStorage_Sqlite.res +63 -40
  47. package/src/adapter/QueryDb/SortKey_Filter.res +14 -6
  48. package/src/adapter/Runtime/LocalAggregateRuntime_Builder.res +12 -10
  49. package/src/adapter/Runtime/LocalEventCollectorRuntime_Builder.res +8 -2
  50. package/src/adapter/Runtime/LocalPluginRuntime_Builder.res +1 -4
  51. package/src/adapter/Scheduler/LocalScheduledPublisher.res +12 -12
  52. package/src/adapter/SqliteDriver.res +16 -4
  53. package/src/adapter/Task/TaskBucket_Sqlite.res +5 -6
  54. package/src/components/Aggregate_Builder.res +6 -1
  55. package/src/components/Counter_Builder.res +1 -5
  56. package/src/components/DcbEventLog_Builder.res +5 -3
  57. package/src/components/ExtensionPoint_Builder.res +13 -15
  58. package/src/components/InboundTranslationSlice_Builder.res +3 -2
  59. package/src/components/OutboundTranslationSlice_Builder.res +3 -2
  60. package/src/components/ReadModel_Builder.res +18 -20
  61. package/src/components/StateViewSlice_Builder.res +3 -2
  62. package/src/components/Task_Builder.res +12 -13
  63. package/src/reset/LocalSeedReset.res +2 -5
  64. package/src/test/Mocks/MockDcbEventLogStorage.res +5 -1
  65. package/src/test/Mocks/MockEventLogStorage.res +8 -3
  66. package/src/test/Mocks/MockQueryDbStorage.res +3 -2
  67. package/src/test/TestRunner.res +1 -1
  68. package/tests/BakedManifestFilesTest.res +7 -10
  69. package/tests/LocalEventTapTest.res +26 -21
  70. package/tests/LocalPlatformStartTest.res +33 -28
  71. package/tests/PluginEventDecodeTest.res +3 -3
  72. package/tests/ShellConfigTest.res +30 -21
  73. package/tests/SplitApiFixtures.res +34 -10
  74. package/tests/SplitApiTest.res +92 -62
  75. package/tests/adapter/BackendParityTest.res +180 -130
  76. package/tests/adapter/CollectNEventsTest.res +6 -4
  77. package/tests/adapter/CommandAuthorizationTest.res +47 -41
  78. package/tests/adapter/CommandTopicChannelTest.res +163 -139
  79. package/tests/adapter/CounterHandlerTest.res +95 -77
  80. package/tests/adapter/DcbEventLogStorageSqliteTest.res +171 -168
  81. package/tests/adapter/DcbEventLogStorageTest.res +264 -207
  82. package/tests/adapter/DomainGraphQL_ServerTest.res +53 -43
  83. package/tests/adapter/EventCollectorChannelTest.res +153 -124
  84. package/tests/adapter/EventHistoryResolverTest.res +46 -18
  85. package/tests/adapter/EventLogSnapshotParityTest.res +57 -45
  86. package/tests/adapter/EventLogStorageSqliteTest.res +9 -10
  87. package/tests/adapter/EventTapTest.res +37 -20
  88. package/tests/adapter/EventTopicPublisherTest.res +74 -50
  89. package/tests/adapter/GraphQLSubscriptionBridgeTest.res +4 -3
  90. package/tests/adapter/GraphQL_SchemaInspectorTest.res +666 -568
  91. package/tests/adapter/GraphQL_SubscriptionResolversTest.res +105 -96
  92. package/tests/adapter/HeartbeatRunnerTest.res +99 -81
  93. package/tests/adapter/InboundTranslationMutationTest.res +4 -1
  94. package/tests/adapter/LocalAuthHttpTest.res +79 -85
  95. package/tests/adapter/LocalAuthLoginTest.res +42 -50
  96. package/tests/adapter/LocalAuthTest.res +8 -16
  97. package/tests/adapter/LocalAuthUserStoreTest.res +2 -7
  98. package/tests/adapter/LocalBusBoundedTest.res +187 -117
  99. package/tests/adapter/LocalBusPubSubTest.res +118 -76
  100. package/tests/adapter/LocalDispatchContextTest.res +1 -2
  101. package/tests/adapter/LocalEvents_ServerTest.res +242 -187
  102. package/tests/adapter/PgProjectionCatchupTest.res +44 -10
  103. package/tests/adapter/ProjectionCheckpointTest.res +261 -206
  104. package/tests/adapter/QueryDbGsiTtlTest.res +123 -83
  105. package/tests/adapter/QueryDbListPushdownParityTest.res +107 -67
  106. package/tests/adapter/QueryDbListResolverTest.res +225 -208
  107. package/tests/adapter/QueryDbResolvedFieldsTest.res +17 -14
  108. package/tests/adapter/QueryDbStorageSqliteTest.res +33 -49
  109. package/tests/adapter/QueryDbStorageTest.res +163 -117
  110. package/tests/adapter/QueryDbUnionRoundTripTest.res +8 -10
  111. package/tests/adapter/QueryEngineTest.res +179 -126
  112. package/tests/adapter/ScheduledPublisherTest.res +171 -135
  113. package/tests/adapter/ServedBucketHttpTest.res +65 -59
  114. package/tests/adapter/SortKey_FilterTest.res +19 -3
  115. package/tests/adapter/SqliteDriverTest.res +13 -10
  116. package/tests/adapter/TaskBucketTest.res +94 -80
  117. package/tests/components/aggregate/AggregateTest.res +31 -18
  118. package/tests/components/automationslice/AutomationSliceCallbackTest.res +259 -222
  119. package/tests/components/automationslice/AutomationSliceFixtures.res +4 -2
  120. package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res +38 -38
  121. package/tests/components/automationslice/MixedSourceAutomationSliceFixtures.res +12 -14
  122. package/tests/components/automationslice/MixedSourceAutomationSliceTest.res +8 -32
  123. package/tests/components/commandgenerator/CommandGeneratorFixtures.res +7 -5
  124. package/tests/components/commandgenerator/CommandGeneratorTest.res +40 -31
  125. package/tests/components/commandtopic/CommandTopicFixtures.res +3 -4
  126. package/tests/components/commandtopic/CommandTopicStreamFixtures.res +7 -5
  127. package/tests/components/commandtopic/CommandTopicTest.res +24 -15
  128. package/tests/components/counter/CounterFixtures.res +6 -8
  129. package/tests/components/dcb/DcbCrossPartitionFixtures.res +8 -2
  130. package/tests/components/dcb/DcbCrossPartitionReadTest.res +20 -13
  131. package/tests/components/dcb/DcbEventLogAppendStreamTest.res +12 -8
  132. package/tests/components/dcb/DcbEventLogStreamTest.res +88 -61
  133. package/tests/components/dcb/DcbFixtures.res +4 -1
  134. package/tests/components/dcb/DcbTest.res +9 -6
  135. package/tests/components/eventcollector/EventCollectorFixtures.res +0 -1
  136. package/tests/components/eventcollector/EventCollectorTest.res +6 -3
  137. package/tests/components/eventlog/EventLogAppendStreamTest.res +88 -68
  138. package/tests/components/eventlog/EventLogConflictTest.res +8 -4
  139. package/tests/components/eventlog/EventLogFixtures.res +3 -3
  140. package/tests/components/eventlog/EventLogProvisioningSeamTest.res +26 -13
  141. package/tests/components/eventlog/EventLogStreamTest.res +119 -56
  142. package/tests/components/eventlog/EventLogTest.res +20 -4
  143. package/tests/components/eventtopic/EventTopicFixtures.res +3 -3
  144. package/tests/components/eventtopic/EventTopicStreamFixtures.res +1 -2
  145. package/tests/components/eventtopic/EventTopicStreamTest.res +7 -1
  146. package/tests/components/extensionpoint/ExtensionPointFixtures.res +14 -9
  147. package/tests/components/extensionpoint/ExtensionPointTest.res +3 -2
  148. package/tests/components/heartbeat/HeartbeatFixtures.res +5 -6
  149. package/tests/components/heartbeat/HeartbeatTest.res +56 -47
  150. package/tests/components/inboundtranslationslice/InboundTranslationSliceCallbackTest.res +271 -249
  151. package/tests/components/inboundtranslationslice/InboundTranslationSliceFixtures.res +3 -2
  152. package/tests/components/outboundtranslationslice/OutboundTranslationSliceCallbackTest.res +361 -276
  153. package/tests/components/outboundtranslationslice/OutboundTranslationSliceFixtures.res +8 -10
  154. package/tests/components/outboundtranslationslice/OutboundTranslationSlicePlatformFixtures.res +37 -43
  155. package/tests/components/querydb/QueryDbFixtures.res +1 -5
  156. package/tests/components/querydb/QueryDbTest.res +2 -4
  157. package/tests/components/readmodel/DcbReadModelE2EFixtures.res +15 -18
  158. package/tests/components/readmodel/MixedSourceReadModelFixtures.res +5 -7
  159. package/tests/components/readmodel/ReadModelFixtures.res +8 -8
  160. package/tests/components/scheduler/SchedulerTest.res +76 -58
  161. package/tests/components/sideeffecthandler/SideEffectHandlerFixtures.res +4 -4
  162. package/tests/components/stateviewslice/StateViewSliceDisplayNameFixtures.res +5 -7
  163. package/tests/components/stateviewslice/StateViewSliceFixtures.res +8 -6
  164. package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res +17 -11
  165. package/tests/components/stateviewslice/StateViewSliceSubIdTest.res +12 -2
  166. package/tests/components/task/TaskFixtures.res +5 -5
  167. package/tests/components/task/TaskTest.res +95 -80
  168. package/tests/plugin/PluginsProjection_GWT.res +3 -1
  169. package/tests/plugin/UiFragments_GWT.res +6 -1
  170. package/tests/reset/LocalSeedResetTest.res +1 -0
@@ -16,7 +16,6 @@ let defaultMeta: Reventless.Message.meta = {
16
16
  correlationId: "",
17
17
  }
18
18
 
19
-
20
19
  type consoleObj = {mutable log: string => unit}
21
20
  @val external console: consoleObj = "console"
22
21
 
@@ -51,24 +50,33 @@ describe("LocalBus event tap (Phase 9)", () => {
51
50
  testPromise("tap off → no sentinel line is emitted", async () => {
52
51
  clearEnv()
53
52
  module TestBus = LocalBus.MakeSilent()
54
- let logs = await captureLogs(async () => {
55
- await TestBus.publishEvent("SomeTopic", "svc", defaultMeta, JSON.parseOrThrow(`{"a":1}`))
56
- })
53
+ let logs = await captureLogs(
54
+ async () => {
55
+ await TestBus.publishEvent("SomeTopic", "svc", defaultMeta, JSON.parseOrThrow(`{"a":1}`))
56
+ },
57
+ )
57
58
  expect(tapLines(logs)->Array.length)->toBe(0)
58
59
  })
59
60
 
60
61
  testPromise("tap on → one well-formed line per published event", async () => {
61
62
  NodeProcess.env->Dict.set("REVENTLESS_EVENT_TAP", "ndjson")
62
63
  module TestBus = LocalBus.MakeSilent()
63
- let logs = await captureLogs(async () => {
64
- await TestBus.publishEvent(
65
- "CatalogEventTopic",
66
- "CatalogDcbEventLog",
67
- defaultMeta,
68
- JSON.parseOrThrow(`{"event":{"TAG":"ProductAdded","productId":"p-1"}}`),
69
- )
70
- await TestBus.publishEvent("OrderingEventTopic", "svc", defaultMeta, JSON.parseOrThrow(`{}`))
71
- })
64
+ let logs = await captureLogs(
65
+ async () => {
66
+ await TestBus.publishEvent(
67
+ "CatalogEventTopic",
68
+ "CatalogDcbEventLog",
69
+ defaultMeta,
70
+ JSON.parseOrThrow(`{"event":{"TAG":"ProductAdded","productId":"p-1"}}`),
71
+ )
72
+ await TestBus.publishEvent(
73
+ "OrderingEventTopic",
74
+ "svc",
75
+ defaultMeta,
76
+ JSON.parseOrThrow(`{}`),
77
+ )
78
+ },
79
+ )
72
80
  clearEnv()
73
81
  let lines = tapLines(logs)
74
82
  expect(lines->Array.length)->toBe(2)
@@ -77,7 +85,9 @@ describe("LocalBus event tap (Phase 9)", () => {
77
85
  // topic name, and the payload passed to publishEvent (no topic-name guessing).
78
86
  let first = lines->Array.getUnsafe(0)
79
87
  let json =
80
- first->String.slice(~start=sentinel->String.length, ~end=first->String.length)->JSON.parseOrThrow
88
+ first
89
+ ->String.slice(~start=sentinel->String.length, ~end=first->String.length)
90
+ ->JSON.parseOrThrow
81
91
  let obj = json->JSON.Decode.object->Option.getOrThrow
82
92
  expect(obj->Dict.get("event")->Option.flatMap(JSON.Decode.string))->toEqual(Some("domainEvent"))
83
93
  expect(obj->Dict.get("topic")->Option.flatMap(JSON.Decode.string))->toEqual(
@@ -92,8 +102,13 @@ describe("LocalBus event tap (Phase 9)", () => {
92
102
  // what the rest of the file published first.
93
103
  let seqOf = line => {
94
104
  let j = line->String.slice(~start=sentinel->String.length, ~end=line->String.length)
95
- j->JSON.parseOrThrow->JSON.Decode.object->Option.getOrThrow->Dict.get("seq")
96
- ->Option.flatMap(JSON.Decode.float)->Option.getOr(0.)
105
+ j
106
+ ->JSON.parseOrThrow
107
+ ->JSON.Decode.object
108
+ ->Option.getOrThrow
109
+ ->Dict.get("seq")
110
+ ->Option.flatMap(JSON.Decode.float)
111
+ ->Option.getOr(0.)
97
112
  }
98
113
  expect(seqOf(lines->Array.getUnsafe(1)) -. seqOf(first))->toEqual(1.)
99
114
  })
@@ -101,10 +116,12 @@ describe("LocalBus event tap (Phase 9)", () => {
101
116
  testPromise("tap emits even when the topic has no subscribers", async () => {
102
117
  NodeProcess.env->Dict.set("REVENTLESS_EVENT_TAP", "ndjson")
103
118
  module TestBus = LocalBus.MakeSilent()
104
- let logs = await captureLogs(async () => {
105
- // No subscribeToEvents call — the tap fires before the subscriber-count gate.
106
- await TestBus.publishEvent("Lonely", "svc", defaultMeta, JSON.Null)
107
- })
119
+ let logs = await captureLogs(
120
+ async () => {
121
+ // No subscribeToEvents call — the tap fires before the subscriber-count gate.
122
+ await TestBus.publishEvent("Lonely", "svc", defaultMeta, JSON.Null)
123
+ },
124
+ )
108
125
  clearEnv()
109
126
  expect(tapLines(logs)->Array.length)->toBe(1)
110
127
  })
@@ -17,60 +17,84 @@ let testMeta: Reventless.Message.meta = {
17
17
 
18
18
  describe("LocalEventTopicPublisher", () => {
19
19
  describe("make", () => {
20
- testPromise("returns one resource whose name resolves to the topic name", async () => {
21
- module TestBus = LocalBus.Make()
22
- module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
23
- let pub = TestPublisher.make(~name="MyTopic", ~storageResources=[], ~owner=None, ~opts={})
24
- expect(pub.resources->Array.length)->toBe(1)
25
- let resource = pub.resources->Array.getUnsafe(0)
26
- let name = await resource.name->TestRunner.resolve
27
- expect(name)->toBe("MyTopic")
28
- })
20
+ testPromise(
21
+ "returns one resource whose name resolves to the topic name",
22
+ async () => {
23
+ module TestBus = LocalBus.Make()
24
+ module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
25
+ let pub = TestPublisher.make(~name="MyTopic", ~storageResources=[], ~owner=None, ~opts={})
26
+ expect(pub.resources->Array.length)->toBe(1)
27
+ let resource = pub.resources->Array.getUnsafe(0)
28
+ let name = await resource.name->TestRunner.resolve
29
+ expect(name)->toBe("MyTopic")
30
+ },
31
+ )
29
32
  })
30
33
 
31
34
  describe("publishJson", () => {
32
- testPromise("delivers event to subscriber on the same topic", async () => {
33
- module TestBus = LocalBus.Make()
34
- module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
35
- let received: ref<option<JSON.t>> = ref(None)
36
- TestBus.subscribeToEvents("TestTopic", async (_, _, json) => {
37
- received := Some(json)
38
- })
39
- let pub = TestPublisher.make(~name="TestTopic", ~storageResources=[], ~owner=None, ~opts={})
40
- let publishFn = await pub.publishJson->TestRunner.resolve
41
- await publishFn("svc", testMeta, JSON.Encode.string("hello"))
42
- expect(received.contents)->toEqual(Some(JSON.Encode.string("hello")))
43
- })
35
+ testPromise(
36
+ "delivers event to subscriber on the same topic",
37
+ async () => {
38
+ module TestBus = LocalBus.Make()
39
+ module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
40
+ let received: ref<option<JSON.t>> = ref(None)
41
+ TestBus.subscribeToEvents(
42
+ "TestTopic",
43
+ async (_, _, json) => {
44
+ received := Some(json)
45
+ },
46
+ )
47
+ let pub = TestPublisher.make(~name="TestTopic", ~storageResources=[], ~owner=None, ~opts={})
48
+ let publishFn = await pub.publishJson->TestRunner.resolve
49
+ await publishFn("svc", testMeta, JSON.Encode.string("hello"))
50
+ expect(received.contents)->toEqual(Some(JSON.Encode.string("hello")))
51
+ },
52
+ )
44
53
 
45
- testPromise("publishing to topic-a does not trigger topic-b subscriber", async () => {
46
- module TestBus = LocalBus.Make()
47
- module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
48
- let countA: ref<int> = ref(0)
49
- let countB: ref<int> = ref(0)
50
- TestBus.subscribeToEvents("topic-a", async (_, _, _) => {
51
- countA := countA.contents + 1
52
- })
53
- TestBus.subscribeToEvents("topic-b", async (_, _, _) => {
54
- countB := countB.contents + 1
55
- })
56
- let pub = TestPublisher.make(~name="topic-a", ~storageResources=[], ~owner=None, ~opts={})
57
- let publishFn = await pub.publishJson->TestRunner.resolve
58
- await publishFn("svc", testMeta, JSON.Null)
59
- expect(countA.contents)->toBe(1)
60
- expect(countB.contents)->toBe(0)
61
- })
54
+ testPromise(
55
+ "publishing to topic-a does not trigger topic-b subscriber",
56
+ async () => {
57
+ module TestBus = LocalBus.Make()
58
+ module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
59
+ let countA: ref<int> = ref(0)
60
+ let countB: ref<int> = ref(0)
61
+ TestBus.subscribeToEvents(
62
+ "topic-a",
63
+ async (_, _, _) => {
64
+ countA := countA.contents + 1
65
+ },
66
+ )
67
+ TestBus.subscribeToEvents(
68
+ "topic-b",
69
+ async (_, _, _) => {
70
+ countB := countB.contents + 1
71
+ },
72
+ )
73
+ let pub = TestPublisher.make(~name="topic-a", ~storageResources=[], ~owner=None, ~opts={})
74
+ let publishFn = await pub.publishJson->TestRunner.resolve
75
+ await publishFn("svc", testMeta, JSON.Null)
76
+ expect(countA.contents)->toBe(1)
77
+ expect(countB.contents)->toBe(0)
78
+ },
79
+ )
62
80
 
63
- testPromise("passes service name from publishJson call to subscriber", async () => {
64
- module TestBus = LocalBus.Make()
65
- module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
66
- let receivedService: ref<string> = ref("")
67
- TestBus.subscribeToEvents("svcTopic", async (service, _, _) => {
68
- receivedService := service
69
- })
70
- let pub = TestPublisher.make(~name="svcTopic", ~storageResources=[], ~owner=None, ~opts={})
71
- let publishFn = await pub.publishJson->TestRunner.resolve
72
- await publishFn("MyService", testMeta, JSON.Null)
73
- expect(receivedService.contents)->toBe("MyService")
74
- })
81
+ testPromise(
82
+ "passes service name from publishJson call to subscriber",
83
+ async () => {
84
+ module TestBus = LocalBus.Make()
85
+ module TestPublisher = LocalEventTopicPublisher.Make(TestBus)
86
+ let receivedService: ref<string> = ref("")
87
+ TestBus.subscribeToEvents(
88
+ "svcTopic",
89
+ async (service, _, _) => {
90
+ receivedService := service
91
+ },
92
+ )
93
+ let pub = TestPublisher.make(~name="svcTopic", ~storageResources=[], ~owner=None, ~opts={})
94
+ let publishFn = await pub.publishJson->TestRunner.resolve
95
+ await publishFn("MyService", testMeta, JSON.Null)
96
+ expect(receivedService.contents)->toBe("MyService")
97
+ },
98
+ )
75
99
  })
76
100
  })
@@ -65,7 +65,9 @@ describe("GraphQL_SubscriptionBridge — injected PubSub seam", () => {
65
65
  ~server,
66
66
  ~sdlFields=[sdlField],
67
67
  ~sourceAEntries=[],
68
- ~sourceBEntries=[{fieldName: "onCatalogProduct_stateChanged", topic: "onCatalogProduct_stateChanged"}],
68
+ ~sourceBEntries=[
69
+ {fieldName: "onCatalogProduct_stateChanged", topic: "onCatalogProduct_stateChanged"},
70
+ ],
69
71
  ~pubSub,
70
72
  )
71
73
 
@@ -85,8 +87,7 @@ describe("GraphQL_SubscriptionBridge — injected PubSub seam", () => {
85
87
  let consumerPromise = startConsumer(iter, 1000)
86
88
  await yieldTick()
87
89
 
88
- let payload =
89
- JSON.Encode.object(Dict.fromArray([("id", JSON.Encode.string("prod-1"))]))
90
+ let payload = JSON.Encode.object(Dict.fromArray([("id", JSON.Encode.string("prod-1"))]))
90
91
  Bridge.publish(~pubSub, topic, payload)
91
92
 
92
93
  let received = await consumerPromise