Merge pull request #2722 from PR0M3TH3AN/refactor/revert-modal-nip71-d-tag-2158505577819364487

Refactor RevertModal to use shared nip71.getDTagValueFromTags
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2026-02-26 14:41:31 -05:00
commit 55fd4ed789
1 file changed
+52 -39
+52 -39
View File
@@ -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");
});