Files
pwap/mobile/src/contexts/__tests__/PezkuwiContext.test.tsx
T
pezkuwichain 8d30519efc Fix all shadow deprecation warnings across entire mobile app
- Replaced shadowColor/shadowOffset/shadowOpacity/shadowRadius with boxShadow
- Fixed 28 files (21 screens + 7 components)
- Preserved elevation for Android compatibility
- All React Native Web deprecation warnings resolved

Files fixed:
- All screen components
- All reusable components
- Navigation components
- Modal components
2026-01-14 15:05:10 +03:00

99 lines
3.0 KiB
TypeScript

import React from 'react';
import { renderHook, act, waitFor } from '@testing-library/react-native';
import { PezkuwiProvider, usePezkuwi } from './PezkuwiContext';
import { ApiPromise } from '@pezkuwi/api';
// Wrapper for provider
const wrapper = ({ children }: { children: React.ReactNode }) => (
<PezkuwiProvider>{children}</PezkuwiProvider>
);
describe('PezkuwiContext', () => {
beforeEach(() => {
jest.clearAllMocks();
});
it('should provide pezkuwi context', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(result.current).toBeDefined();
expect(result.current.api).toBeNull();
expect(result.current.isApiReady).toBe(false);
expect(result.current.selectedAccount).toBeNull();
});
it('should initialize API connection', async () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
await waitFor(() => {
expect(result.current.isApiReady).toBe(false); // Mock doesn't complete
});
});
it('should provide connectWallet function', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(result.current.connectWallet).toBeDefined();
expect(typeof result.current.connectWallet).toBe('function');
});
it('should handle disconnectWallet', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
act(() => {
result.current.disconnectWallet();
});
expect(result.current.selectedAccount).toBeNull();
});
it('should provide setSelectedAccount function', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(result.current.setSelectedAccount).toBeDefined();
expect(typeof result.current.setSelectedAccount).toBe('function');
});
it('should set selected account', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
const testAccount = { address: '5test', name: 'Test Account' };
act(() => {
result.current.setSelectedAccount(testAccount);
});
expect(result.current.selectedAccount).toEqual(testAccount);
});
it('should provide getKeyPair function', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(result.current.getKeyPair).toBeDefined();
expect(typeof result.current.getKeyPair).toBe('function');
});
it('should throw error when usePezkuwi is used outside provider', () => {
// Suppress console error for this test
const spy = jest.spyOn(console, 'error').mockImplementation(() => {});
expect(() => {
renderHook(() => usePezkuwi());
}).toThrow('usePezkuwi must be used within PezkuwiProvider');
spy.mockRestore();
});
it('should handle accounts array', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(Array.isArray(result.current.accounts)).toBe(true);
});
it('should handle error state', () => {
const { result } = renderHook(() => usePezkuwi(), { wrapper });
expect(result.current.error).toBeDefined();
});
});