UNPKG

create-dynamic-app

Version:

CLI tool to generate sample applications using Dynamic's web3 authentication

100 lines (84 loc) 3.38 kB
import { describe, it, expect } from "bun:test" import { generateProvidersContent } from "../../next-templates/providers" import type { Chain } from "../../types" describe("Next.js Providers Generation", () => { const mockChains: Chain[] = [ { name: "Ethereum", package: "@dynamic-labs/ethereum", connector: "EthereumWalletConnectors", }, { name: "Solana", package: "@dynamic-labs/solana", connector: "SolanaWalletConnectors", }, ] describe("Ethereum with Viem", () => { it("should generate correct provider imports", () => { const content = generateProvidersContent(true, [mockChains[0]]) // Check for core imports expect(content).toContain( 'import { DynamicContextProvider } from "@dynamic-labs/sdk-react-core"' ) expect(content).toContain('import { WagmiProvider } from "wagmi"') expect(content).toContain( 'import { QueryClient, QueryClientProvider } from "@tanstack/react-query"' ) expect(content).toContain( 'import { DynamicWagmiConnector } from "@dynamic-labs/wagmi-connector"' ) expect(content).toContain('import { config } from "@/lib/wagmi"') // Check for chain-specific imports expect(content).toContain( 'import { EthereumWalletConnectors } from "@dynamic-labs/ethereum"' ) expect(content).not.toContain("import { SolanaWalletConnectors }") }) it("should include proper environment configuration", () => { const content = generateProvidersContent(true, [mockChains[0]]) expect(content).toContain("process.env.NEXT_PUBLIC_DYNAMIC_ENV_ID") }) }) describe("Ethereum with Ethers", () => { it("should generate correct provider imports", () => { const content = generateProvidersContent(false, [mockChains[0]]) // Check for core imports expect(content).toContain( 'import { DynamicContextProvider } from "@dynamic-labs/sdk-react-core"' ) expect(content).not.toContain("import { WagmiProvider }") // Check for chain-specific imports expect(content).toContain( 'import { EthereumWalletConnectors } from "@dynamic-labs/ethereum"' ) expect(content).not.toContain("import { SolanaWalletConnectors }") }) it("should include proper environment configuration", () => { const content = generateProvidersContent(false, [mockChains[0]]) expect(content).toContain("process.env.NEXT_PUBLIC_DYNAMIC_ENV_ID") }) }) describe("Multiple Chains", () => { it("should include all configured chains", () => { const content = generateProvidersContent(true, mockChains) // Check for chain configuration expect(content).toContain("EthereumWalletConnectors") expect(content).toContain("SolanaWalletConnectors") }) it("should include proper provider structure", () => { const content = generateProvidersContent(true, mockChains) // Check for provider structure expect(content).toContain("export default function Providers") expect(content).toContain("const queryClient = new QueryClient()") expect(content).toContain("<WagmiProvider config={config}>") expect(content).toContain("<QueryClientProvider client={queryClient}>") expect(content).toContain("<DynamicWagmiConnector>") }) it("should include theme configuration", () => { const content = generateProvidersContent(true, mockChains) // Check for theme configuration expect(content).toContain('theme="auto"') }) }) })