UNPKG

@nostr-dev-kit/ndk

Version:

NDK - Nostr Development Kit. Includes AI Guardrails to catch common mistakes during development.

90 lines (64 loc) 2.78 kB
import { describe, expect, it, vi } from "vitest"; import { NDKUser } from "../user/index.js"; import { NDK } from "./index.js"; describe("activeUser:change event", () => { it("should emit activeUser:change when activeUser is set", () => { const ndk = new NDK(); const listener = vi.fn(); ndk.on("activeUser:change", listener); const user = new NDKUser({ pubkey: "test-pubkey" }); ndk.activeUser = user; expect(listener).toHaveBeenCalled(); expect(listener).toHaveBeenCalledTimes(1); expect(listener.mock.calls[0][0]).toBe(user); }); it("should emit activeUser:change when activeUser changes to a different user", () => { const ndk = new NDK(); const listener = vi.fn(); const user1 = new NDKUser({ pubkey: "pubkey1" }); ndk.activeUser = user1; ndk.on("activeUser:change", listener); const user2 = new NDKUser({ pubkey: "pubkey2" }); ndk.activeUser = user2; expect(listener).toHaveBeenCalled(); expect(listener).toHaveBeenCalledTimes(1); expect(listener.mock.calls[0][0]).toBe(user2); }); it("should not emit activeUser:change when set to the same user", () => { const ndk = new NDK(); const listener = vi.fn(); const user = new NDKUser({ pubkey: "test-pubkey" }); ndk.activeUser = user; ndk.on("activeUser:change", listener); // Set to same user (same pubkey) const sameUser = new NDKUser({ pubkey: "test-pubkey" }); ndk.activeUser = sameUser; expect(listener).not.toHaveBeenCalled(); }); it("should emit activeUser:change when activeUser is cleared", () => { const ndk = new NDK(); const listener = vi.fn(); const user = new NDKUser({ pubkey: "test-pubkey" }); ndk.activeUser = user; ndk.on("activeUser:change", listener); ndk.activeUser = undefined; expect(listener).toHaveBeenCalled(); expect(listener).toHaveBeenCalledTimes(1); expect(listener.mock.calls[0][0]).toBeUndefined(); }); it("should emit activeUser:change when signer is set", async () => { const ndk = new NDK(); const listener = vi.fn(); ndk.on("activeUser:change", listener); // Create a mock signer const mockUser = new NDKUser({ pubkey: "signer-pubkey" }); const mockSigner = { user: vi.fn().mockResolvedValue(mockUser), }; ndk.signer = mockSigner as any; // Wait for async user() call to complete await new Promise((resolve) => setTimeout(resolve, 10)); expect(listener).toHaveBeenCalled(); expect(listener.mock.calls[0][0]).toBe(mockUser); }); });