import { expect } from 'chai' import { AdderProvider, useAdder } from './useAdder' import { renderDAppHook } from '../../src/testing' describe('useAdder', () => { it('properly renders without arguments or context wrapper', async () => { const { result } = await renderDAppHook(useAdder) expect(result.error).to.be.undefined expect(result.current.sum).to.be.equal(0) }) it('properly renders with arguments', async () => { const { result: firstExample } = await renderDAppHook(() => useAdder(1, 1)) const { result: secondExample } = await renderDAppHook(({ arg1, arg2 }) => useAdder(arg1, arg2), { renderHook: { initialProps: { arg1: 1, arg2: 1 } }, }) expect(firstExample.current.sum).to.be.equal(2) expect(secondExample.current.sum).to.be.equal(2) }) it('properly renders with changing arguments', async () => { const { result, rerender } = await renderDAppHook(({ arg1, arg2 }) => useAdder(arg1, arg2), { renderHook: { initialProps: { arg1: 1, arg2: 1 } }, }) expect(result.current.sum).to.be.equal(2) rerender({ arg1: 2, arg2: 3 }) expect(result.current.sum).to.be.equal(5) }) it('properly renders with context wrapper', async () => { const { result: firstExample } = await renderDAppHook(useAdder, { renderHook: { wrapper: ({ children }) => {children}, }, }) const { result: secondExample } = await renderDAppHook(() => useAdder(), { renderHook: { wrapper: ({ children, prov1, prov2 }) => {children}, initialProps: { prov1: 2, prov2: 2 }, }, }) expect(firstExample.current.sum).to.be.equal(4) expect(secondExample.current.sum).to.be.equal(4) }) it('properly renders with context wrapper changing props', async () => { const { result, rerender } = await renderDAppHook(() => useAdder(), { renderHook: { wrapper: ({ children, prov1, prov2 }) => {children}, initialProps: { prov1: 2, prov2: 2 }, }, }) expect(result.current.sum).to.be.equal(4) rerender({ prov1: 3, prov2: 3 }) expect(result.current.sum).to.be.equal(6) }) it('properly renders with arguments and context wrapper', async () => { const { result } = await renderDAppHook(({ arg1, arg2 }) => useAdder(arg1, arg2), { renderHook: { wrapper: ({ children, prov1, prov2 }) => {children}, initialProps: { arg1: 1, arg2: 1, prov1: 2, prov2: 2 }, }, }) expect(result.error).to.be.undefined expect(result.current.sum).to.be.equal(6) }) it('properly renders with changing arguments and context wrapper changing props', async () => { const { result, rerender } = await renderDAppHook(({ arg1, arg2 }) => useAdder(arg1, arg2), { renderHook: { wrapper: ({ children, prov1, prov2 }) => {children}, initialProps: { arg1: 1, arg2: 1, prov1: 2, prov2: 2 }, }, }) expect(result.error).to.be.undefined expect(result.current.sum).to.be.equal(6) rerender({ arg1: 2, arg2: 2, prov1: 3, prov2: 3 }) expect(result.current.sum).to.be.equal(10) }) })