/**
* Copyright (c) Paymium.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root of this projects source tree.
*/
import { renderHook } from '@crossed/test';
import { useLogic } from '../useLogic';
import { Title } from '../Title';
import { Footer } from '../Footer';
import { Body } from '../Body';
import { act } from 'react';
describe('useLogic', () => {
test('extrait le titre des enfants', () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
],
})
);
expect(result.current.title).not.toBeNull();
expect((result.current.title as any).props.children).toBe(
'Titre du composant'
);
});
test('extrait le footer des enfants', () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
,
],
})
);
expect(result.current.footer).not.toBeNull();
expect((result.current.footer as any).props.children).toBe(
'Footer du composant'
);
});
test('extrait le body des enfants', () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
],
})
);
expect(result.current.body).not.toBeNull();
expect((result.current.body as any).props.children).toBe(
'Contenu du composant'
);
});
test('met à jour le paddingRight en fonction de la différence entre layoutShared et contentLayoutShared', async () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
,
],
})
);
// Simuler un changement dans la largeur du layout
result.current.onLayout({
nativeEvent: { layout: { width: 300 } },
});
await act(() => new Promise((resolve) => setTimeout(resolve, 100)));
expect(result.current.paddingRight).toBe(0);
});
test("gère l'affichage du footer lorsque stickyFooter est true", async () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
,
],
stickyFooter: true,
})
);
await act(() => new Promise((resolve) => setTimeout(resolve, 100)));
// Vérifier que le footer est bien visible après l'effet de timeout
expect(result.current.showFooter).toBe(true);
});
test("n'affiche pas le footer lorsque stickyFooter est false", () => {
const { result } = renderHook(() =>
useLogic({
children: [
Titre du composant,
Contenu du composant,
,
],
stickyFooter: false,
})
);
expect(result.current.showFooter).toBe(false);
});
});