diff --git a/tests/nostr/nip71-d-tag.test.mjs b/tests/nostr/nip71-d-tag.test.mjs index 1e323690..08ee87a9 100644 --- a/tests/nostr/nip71-d-tag.test.mjs +++ b/tests/nostr/nip71-d-tag.test.mjs @@ -1,47 +1,60 @@ -import assert from 'node:assert/strict'; -import { test } from 'node:test'; -import { getDTagValueFromTags } from '../../js/nostr/nip71.js'; +import test from "node:test"; +import assert from "node:assert/strict"; +import { getDTagValueFromTags } from "../../js/nostr/nip71.js"; -test('getDTagValueFromTags utility', async (t) => { - await t.test('returns empty string for invalid inputs', () => { - assert.equal(getDTagValueFromTags(null), ''); - assert.equal(getDTagValueFromTags(undefined), ''); - assert.equal(getDTagValueFromTags({}), ''); - assert.equal(getDTagValueFromTags(''), ''); - assert.equal(getDTagValueFromTags(123), ''); - }); +test("getDTagValueFromTags handles invalid inputs", (t) => { + assert.equal(getDTagValueFromTags(null), ""); + assert.equal(getDTagValueFromTags(undefined), ""); + assert.equal(getDTagValueFromTags("not an array"), ""); + assert.equal(getDTagValueFromTags({}), ""); +}); - await t.test('returns empty string if no d-tag present', () => { - const tags = [['p', 'pubkey'], ['e', 'event-id']]; - assert.equal(getDTagValueFromTags(tags), ''); - }); +test("getDTagValueFromTags handles empty tags array", (t) => { + assert.equal(getDTagValueFromTags([]), ""); +}); - await t.test('returns correct value for single d-tag', () => { - const tags = [['d', 'test-value']]; - assert.equal(getDTagValueFromTags(tags), 'test-value'); - }); +test("getDTagValueFromTags returns empty string if no d-tag present", (t) => { + const tags = [ + ["e", "eventId"], + ["p", "pubkey"], + ["t", "hashtag"], + ]; + assert.equal(getDTagValueFromTags(tags), ""); +}); - await t.test('returns first value for multiple d-tags', () => { - const tags = [['d', 'first'], ['d', 'second']]; - assert.equal(getDTagValueFromTags(tags), 'first'); - }); +test("getDTagValueFromTags returns correct value for single d-tag", (t) => { + const tags = [ + ["e", "eventId"], + ["d", "my-identifier"], + ["p", "pubkey"], + ]; + assert.equal(getDTagValueFromTags(tags), "my-identifier"); +}); - await t.test('skips invalid d-tags (malformed)', () => { +test("getDTagValueFromTags returns first value for multiple d-tags", (t) => { + const tags = [ + ["d", "first-identifier"], + ["d", "second-identifier"], + ]; + assert.equal(getDTagValueFromTags(tags), "first-identifier"); +}); + +test("getDTagValueFromTags skips malformed d-tags", (t) => { + const tags = [ + ["d"], // too short + ["d", null], // invalid value type + ["d", 123], // invalid value type + "not an array tag", + ["d", "valid-identifier"], + ]; + assert.equal(getDTagValueFromTags(tags), "valid-identifier"); +}); + +test("getDTagValueFromTags skips empty string d-tag value", (t) => { + // nip71 implementation: if (typeof tag[1] === "string" && tag[1]) { ... } const tags = [ - ['d'], // missing value - ['d', 123], // value not string - ['d', null], // value not string - 'invalid', // tag not array - ['d', 'valid'], + ["d", ""], + ["d", "next-valid"], ]; - assert.equal(getDTagValueFromTags(tags), 'valid'); - }); - - await t.test('handles empty d-tag value correctly', () => { - // nip71 implementation returns empty string if value is empty string, OR skips it? - // Implementation: if (typeof tag[1] === "string" && tag[1]) { return tag[1]; } - // So it skips empty strings. - const tags = [['d', ''], ['d', 'fallback']]; - assert.equal(getDTagValueFromTags(tags), 'fallback'); - }); + assert.equal(getDTagValueFromTags(tags), "next-valid"); });