@nostr-dev-kit/ndk
Version:
NDK - Nostr Development Kit
122 lines (116 loc) • 5.43 kB
text/typescript
import { beforeEach, describe, expect, it, vi } from "vitest";
import { NDK } from "../../../ndk/index.js";
import { NDKEvent } from "../../index.js";
import { NDKAppHandlerEvent } from "./app-handler";
const validEvent = {
kind: 31990,
id: "1dd29c0628790e20d7e5ce218bdb4e1db45fecf844b0afa9f2cefdb30b426a96",
pubkey: "73c6bb92440a9344279f7a36aa3de1710c9198b1e9e8a394cd13e0dd5c994c63",
created_at: 1704502265,
tags: [
["d", "1704502265408"],
["published_at", "1704502265"],
["r", "https://highlighter.com"],
["alt", "Nostr App: Highlighter"],
[
"zap",
"fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52",
"wss://relay.nostr.band",
"9",
],
[
"zap",
"73c6bb92440a9344279f7a36aa3de1710c9198b1e9e8a394cd13e0dd5c994c63",
"wss://relay.nostr.band",
"1",
],
[
"p",
"fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52",
"wss://relay.nostr.band",
"author",
],
["k", "9802"],
["k", "39802"],
["k", "30023"],
["k", "30001"],
["web", "https://highlighter.com/a/<bech32>", "naddr"],
["web", "https://highlighter.com/a/<bech32>", "nevent"],
["web", "https://highlighter.com/u/<bech32>", "npub"],
["web", "https://highlighter.com/u/<bech32>", "nprofile"],
["t", "productivity"],
["t", "news"],
["t", "reading"],
],
content:
'{"name":"Highlighter","display_name":"Highlighter","nip05":"","picture":"https://highlighter.com/favicon.svg","banner":"https://image.nostr.build/fdaae24f5124ca3549a790f6cd3f939aeaa853dd2dc059e8a9989802988b32c3.png","about":"Capture every passage","lud16":"pf7z@getalby.com","website":"https://highlighter.com"}',
sig: "e79cdb9641f8cac1dd109965705654d7342f0870c469bf413c1b498377c298686ab03b3d9fbf7f1269903d27eec5851b8c20ad25809a73313d45561d74e5a13e",
};
const invalidEvent = {
created_at: 1722398354,
content:
'{"name":"YakiHonne","display_name":"YakiHonne","nip05":"_@yakihonne.com","picture":"https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1691722198488-YAKIHONNES3.png","banner":"https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1700727820143-YAKIHONNES3.png","about":"YakiHonne is a Nostr-based decentralized content media protocol that supports blogs, flash news, curation, videos, uncensored notes, zaps, and other content types. Join us now and experience the joy of decentralized publishing, review and settlement media networks.","lud16":"yakihonne@getalby.com","website":"https://yakihonne.com/"}',
tags: [
["d", "1700732875747"],
["published_at", "1700732875"],
["t", "social"],
["t", "news"],
["t", "messaging"],
["t", "video"],
["r", "https://yakihonne.com/"],
["alt", "Nostr App: YakiHonne"],
["r", "https://github.com/YakiHonne", "source"],
["k", "0"],
["k", "1"],
["k", "3"],
["k", "4"],
["k", "6"],
["k", "7"],
["k", "1984"],
["k", "9735"],
["k", "13194"],
["k", "30001"],
["k", "30003"],
["k", "30004"],
["k", "30023"],
["k", "31990"],
["web", "https://yakihonne.com/users/<bech32>", "nprofile"],
["web", "https://yakihonne.com/article/<bech32>", "naddr"],
["web", "https://yakihonne.com/curations/<bech32>", "naddr"],
["web", "https://yakihonne.com/notes/<bech32>", "nevent"],
["web", "https://yakihonne.com/videos/<bech32>", "naddr"],
["web", "https://yakihonne.com/flash-news/<bech32>", "nevent"],
["web", "https://yakihonne.com/uncensored-notes/<bech32>", "nevent"],
["android", "nostr:<bech32>", "nprofile"],
["android", "nostr:<bech32>", "naddr"],
["android", "nostr:<bech32>", "nevent"],
["ios", "nostr:<bech32>", "nprofile"],
["ios", "nostr:<bech32>", "naddr"],
["ios", "nostr:<bech32>", "nevent"],
],
kind: 31990,
pubkey: "20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3",
id: "cbd471c34e2f3779007008a5333999000a35ae9e95710356bd3a8e8dd971bece",
sig: "e7ffcccc3880a89127249733f82898a8e961fd0c6e1428f98b0f6b1aaa41ef673899a2503f8783c40ee6acc35303ffdd245e55660ef960066dd07ef8a94b0c2a",
};
describe("NDKAppHandlerEvent", () => {
let ndk: NDK;
let _appHandlerEvent: NDKAppHandlerEvent;
beforeEach(() => {
ndk = new NDK();
_appHandlerEvent = new NDKAppHandlerEvent(ndk);
});
// Test cases will be added here
it("returns null if the event is invalid", async () => {
// Create an NDKEvent from the invalid event data
const ndkEvent = new NDKEvent(ndk, invalidEvent);
const invalidAppHandler = NDKAppHandlerEvent.from(ndkEvent);
expect(invalidAppHandler).toBeNull();
});
it("returns the event if it is valid", async () => {
// Create an NDKEvent from the valid event data
const ndkEvent = new NDKEvent(ndk, validEvent);
const validAppHandler = NDKAppHandlerEvent.from(ndkEvent);
expect(validAppHandler).not.toBeNull();
});
});