mirror of
https://github.com/kremalicious/blog.git
synced 2024-11-22 01:46:51 +01:00
add some unit tests
This commit is contained in:
parent
d31feb15c3
commit
3afe980562
@ -15,6 +15,7 @@
|
|||||||
"typecheck": "npm run typecheck:astro && npm run typecheck:tsc",
|
"typecheck": "npm run typecheck:astro && npm run typecheck:tsc",
|
||||||
"prebuild": "run-p --silent --continue-on-error create:symlinks create:icons move:downloads",
|
"prebuild": "run-p --silent --continue-on-error create:symlinks create:icons move:downloads",
|
||||||
"test:unit": "vitest run --config './test/vitest.config.ts' --coverage",
|
"test:unit": "vitest run --config './test/vitest.config.ts' --coverage",
|
||||||
|
"test:unit:watch": "vitest watch --config './test/vitest.config.ts' --coverage",
|
||||||
"test:e2e": "playwright test --config './test/playwright.config.ts'",
|
"test:e2e": "playwright test --config './test/playwright.config.ts'",
|
||||||
"lint": "run-p --silent lint:js lint:css lint:md",
|
"lint": "run-p --silent lint:js lint:css lint:md",
|
||||||
"lint:js": "eslint --ignore-path .gitignore './{src,test,scripts}/**/*.{ts,tsx,astro,mjs,js,cjs}'",
|
"lint:js": "eslint --ignore-path .gitignore './{src,test,scripts}/**/*.{ts,tsx,astro,mjs,js,cjs}'",
|
||||||
|
10
src/features/Web3/components/Preview/Preview.test.tsx
Normal file
10
src/features/Web3/components/Preview/Preview.test.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { describe, test, expect } from 'vitest'
|
||||||
|
import { render, screen } from '@testing-library/react'
|
||||||
|
import { Preview } from './Preview'
|
||||||
|
|
||||||
|
describe('Preview component', () => {
|
||||||
|
test('renders without crashing', () => {
|
||||||
|
render(<Preview />)
|
||||||
|
expect(screen.getByText('You are')).toBeInTheDocument()
|
||||||
|
})
|
||||||
|
})
|
10
src/features/Web3/components/Success/Success.test.tsx
Normal file
10
src/features/Web3/components/Success/Success.test.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { describe, test, expect } from 'vitest'
|
||||||
|
import { render, screen } from '@testing-library/react'
|
||||||
|
import { Success } from './Success'
|
||||||
|
|
||||||
|
describe('Success component', () => {
|
||||||
|
test('renders without crashing', () => {
|
||||||
|
render(<Success />)
|
||||||
|
expect(screen.getByText(`You're amazing, thanks!`)).toBeInTheDocument()
|
||||||
|
})
|
||||||
|
})
|
@ -6,7 +6,6 @@ import { useNetwork } from 'wagmi'
|
|||||||
export function Success() {
|
export function Success() {
|
||||||
const { chain } = useNetwork()
|
const { chain } = useNetwork()
|
||||||
const txHash = useStore($txHash)
|
const txHash = useStore($txHash)
|
||||||
console.log(chain)
|
|
||||||
|
|
||||||
const explorerName = chain?.blockExplorers?.default.name
|
const explorerName = chain?.blockExplorers?.default.name
|
||||||
const explorerLink = `${chain?.blockExplorers?.default.url}/tx/${txHash}`
|
const explorerLink = `${chain?.blockExplorers?.default.url}/tx/${txHash}`
|
||||||
|
43
src/features/Web3/hooks/usePrepareSend/prepare.test.ts
Normal file
43
src/features/Web3/hooks/usePrepareSend/prepare.test.ts
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import { test, expect, vi } from 'vitest'
|
||||||
|
import { prepare } from './prepare'
|
||||||
|
import * as wagmiActionsMock from '../../../../../test/__mocks__/wagmi/actions'
|
||||||
|
|
||||||
|
test('prepare with undefined params', async () => {
|
||||||
|
try {
|
||||||
|
await prepare(undefined, undefined, undefined, undefined)
|
||||||
|
expect(true).toBe(false)
|
||||||
|
} catch (e) {
|
||||||
|
expect(true).toBe(true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test('prepare with isNative true uses correct method', async () => {
|
||||||
|
const selectedToken = {
|
||||||
|
address: '0x0',
|
||||||
|
decimals: 18
|
||||||
|
// Add other required properties here
|
||||||
|
}
|
||||||
|
|
||||||
|
const amount = '1'
|
||||||
|
const to = '0xabcdef1234567890'
|
||||||
|
const chainId = 1
|
||||||
|
|
||||||
|
const spy = vi.spyOn(wagmiActionsMock, 'prepareSendTransaction')
|
||||||
|
await prepare(selectedToken as any, amount, to, chainId)
|
||||||
|
expect(spy).toHaveBeenCalledOnce()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('prepare with isNative false uses correct method', async () => {
|
||||||
|
const selectedToken = {
|
||||||
|
address: '0xabcdef1234567890',
|
||||||
|
decimals: 18
|
||||||
|
}
|
||||||
|
|
||||||
|
const amount = '1'
|
||||||
|
const to = '0xabcdef1234567890'
|
||||||
|
const chainId = 1
|
||||||
|
|
||||||
|
const spy = vi.spyOn(wagmiActionsMock, 'prepareWriteContract')
|
||||||
|
await prepare(selectedToken as any, amount, to, chainId)
|
||||||
|
expect(spy).toHaveBeenCalledOnce()
|
||||||
|
})
|
30
src/features/Web3/hooks/useSend/send.test.ts
Normal file
30
src/features/Web3/hooks/useSend/send.test.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import { test, expect, vi } from 'vitest'
|
||||||
|
import { send } from './send'
|
||||||
|
import * as wagmiActionsMock from '../../../../../test/__mocks__/wagmi/actions'
|
||||||
|
|
||||||
|
test('with undefined params', async () => {
|
||||||
|
const result = await send(undefined, undefined)
|
||||||
|
expect(result).toBeUndefined()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('with isNative true uses correct method', async () => {
|
||||||
|
const selectedToken = {
|
||||||
|
address: '0x0',
|
||||||
|
decimals: 18
|
||||||
|
}
|
||||||
|
|
||||||
|
const spy = vi.spyOn(wagmiActionsMock, 'sendTransaction')
|
||||||
|
await send(selectedToken as any, {} as any)
|
||||||
|
expect(spy).toHaveBeenCalledOnce()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('with isNative false uses correct method', async () => {
|
||||||
|
const selectedToken = {
|
||||||
|
address: '0xabcdef1234567890',
|
||||||
|
decimals: 18
|
||||||
|
}
|
||||||
|
|
||||||
|
const spy = vi.spyOn(wagmiActionsMock, 'writeContract')
|
||||||
|
await send(selectedToken as any, {} as any)
|
||||||
|
expect(spy).toHaveBeenCalledOnce()
|
||||||
|
})
|
@ -1,10 +1,10 @@
|
|||||||
import type { GetToken } from '@features/Web3/stores/tokens'
|
|
||||||
import {
|
import {
|
||||||
sendTransaction as sendNative,
|
sendTransaction as sendNative,
|
||||||
writeContract,
|
writeContract,
|
||||||
type SendTransactionArgs,
|
type SendTransactionArgs,
|
||||||
type WriteContractPreparedArgs
|
type WriteContractPreparedArgs
|
||||||
} from 'wagmi/actions'
|
} from 'wagmi/actions'
|
||||||
|
import type { GetToken } from '../useFetchTokens'
|
||||||
|
|
||||||
export async function send(
|
export async function send(
|
||||||
selectedToken: GetToken | undefined,
|
selectedToken: GetToken | undefined,
|
||||||
|
1
src/features/Web3/lib/truncateAddress/index.ts
Normal file
1
src/features/Web3/lib/truncateAddress/index.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export * from './truncateAddress'
|
@ -0,0 +1,11 @@
|
|||||||
|
import { test, expect } from 'vitest'
|
||||||
|
import { truncateAddress } from './truncateAddress'
|
||||||
|
|
||||||
|
test('truncateAddress', () => {
|
||||||
|
const address = '0x1234567890abcdef'
|
||||||
|
const truncated = truncateAddress(address)
|
||||||
|
|
||||||
|
expect(truncated.startsWith('0x1234')).toBe(true)
|
||||||
|
expect(truncated.endsWith('cdef')).toBe(true)
|
||||||
|
expect(truncated).toBe('0x1234...cdef')
|
||||||
|
})
|
15
test/__mocks__/wagmi/actions.ts
Normal file
15
test/__mocks__/wagmi/actions.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
export const prepareSendTransaction = async () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const prepareWriteContract = async () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const sendTransaction = async () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const writeContract = async () => {
|
||||||
|
return {}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import { vi, afterEach } from 'vitest'
|
import { vi, afterEach } from 'vitest'
|
||||||
import { cleanup } from '@testing-library/react'
|
import { cleanup } from '@testing-library/react'
|
||||||
import * as wagmiMock from './__mocks__/wagmi'
|
import * as wagmiMock from './__mocks__/wagmi'
|
||||||
|
import * as wagmiActionsMock from './__mocks__/wagmi/actions'
|
||||||
import * as rainbowkitMock from './__mocks__/@rainbow-me/rainbowkit'
|
import * as rainbowkitMock from './__mocks__/@rainbow-me/rainbowkit'
|
||||||
import balanceMock from './__fixtures__/balance.json'
|
import balanceMock from './__fixtures__/balance.json'
|
||||||
import '@testing-library/jest-dom'
|
import '@testing-library/jest-dom'
|
||||||
@ -19,16 +20,15 @@ Object.defineProperty(window, 'localStorage', {
|
|||||||
})
|
})
|
||||||
|
|
||||||
vi.mock('wagmi', () => wagmiMock)
|
vi.mock('wagmi', () => wagmiMock)
|
||||||
|
vi.mock('wagmi/actions', () => wagmiActionsMock)
|
||||||
vi.mock('@rainbow-me/rainbowkit', () => rainbowkitMock)
|
vi.mock('@rainbow-me/rainbowkit', () => rainbowkitMock)
|
||||||
vi.mock('@features/Web3/hooks/useFetchTokens', () => ({
|
vi.mock('@features/Web3/hooks/useFetchTokens', () => ({
|
||||||
useFetchTokens: () => ({
|
useFetchTokens: () => ({ isLoading: false, data: balanceMock })
|
||||||
isLoading: false,
|
|
||||||
data: balanceMock
|
|
||||||
})
|
|
||||||
}))
|
}))
|
||||||
|
|
||||||
// vi.mock('@features/Web3/stores/selectedToken', () => ({
|
// vi.mock('@features/Web3/stores', () => ({
|
||||||
// $selectedToken: balanceMock[0]
|
// $selectedToken: balanceMock[0],
|
||||||
|
// $amount: '1'
|
||||||
// }))
|
// }))
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user