From 3e69080fdf438ee942ca6b26d06bde3c2f687977 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Thu, 8 Jun 2023 17:10:46 -0400 Subject: [PATCH] feat: refactor signature and add tests --- src/services/novu.ts | 23 +++++++++++++---------- src/tools/novu.ts | 6 +----- test/novu.test.ts | 27 +++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 test/novu.test.ts diff --git a/src/services/novu.ts b/src/services/novu.ts index 0c1ce0a..e02c074 100644 --- a/src/services/novu.ts +++ b/src/services/novu.ts @@ -34,24 +34,27 @@ export class NovuClient { this.baseUrl = baseUrl } - async triggerEvent( - name: string, - payload: Record, + async triggerEvent({ + name, + payload, + to + }: { + name: string + payload: Record to: NovuSubscriber[] - ) { + }) { const url = `${this.baseUrl}/events/trigger` const headers = { Authorization: `ApiKey ${this.apiKey}`, 'Content-Type': 'application/json' } - const body = JSON.stringify({ - name, - payload, - to - }) const response = await ky.post(url, { headers, - body + json: { + name, + payload, + to + } }) return response.json() } diff --git a/src/tools/novu.ts b/src/tools/novu.ts index 6cdb8a1..ff80eb3 100644 --- a/src/tools/novu.ts +++ b/src/tools/novu.ts @@ -69,11 +69,7 @@ export class NovuNotificationTool extends BaseTask< // TODO: handle errors gracefully input = this.inputSchema.parse(input) - const result = await this._novuClient.triggerEvent( - input.name, - input.payload, - input.to - ) + const result = await this._novuClient.triggerEvent(input) return { result, metadata: {} diff --git a/test/novu.test.ts b/test/novu.test.ts new file mode 100644 index 0000000..5e48496 --- /dev/null +++ b/test/novu.test.ts @@ -0,0 +1,27 @@ +import test from 'ava' + +import { NovuClient } from '../src/services/novu' +import './_utils' + +test('NovuClient.triggerEvent', async (t) => { + if (!process.env.NOVU_API_KEY) { + return t.pass() + } + + t.timeout(2 * 60 * 1000) + const client = new NovuClient() + + const result = await client.triggerEvent({ + name: 'send-email', + payload: { + content: 'Hello World!' + }, + to: [ + { + subscriberId: '123456', + email: 'pburckhardt@outlook.com' + } + ] + }) + t.truthy(result) +})