create-dynamic-app
Version:
CLI tool to generate sample applications using Dynamic's web3 authentication
96 lines (81 loc) • 3.2 kB
text/typescript
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",
},
]
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"'
)
// 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", () => {
const mockChainsMultiple: Chain[] = [
...mockChains,
{
name: "Solana",
package: "@dynamic-labs/solana",
connector: "SolanaWalletConnectors",
},
]
it("should include all configured chains", () => {
const content = generateProvidersContent(true, mockChainsMultiple)
// Check for chain configuration
expect(content).toContain("EthereumWalletConnectors")
expect(content).toContain("SolanaWalletConnectors")
})
it("should include proper provider structure", () => {
const content = generateProvidersContent(true, mockChainsMultiple)
// 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>")
})
})
})