diff --git a/packages/twenty-front/src/modules/keyboard-shortcut-menu/hooks/__tests__/useKeyboardShortcutMenu.test.tsx b/packages/twenty-front/src/modules/keyboard-shortcut-menu/hooks/__tests__/useKeyboardShortcutMenu.test.tsx
new file mode 100644
index 000000000..49d98de15
--- /dev/null
+++ b/packages/twenty-front/src/modules/keyboard-shortcut-menu/hooks/__tests__/useKeyboardShortcutMenu.test.tsx
@@ -0,0 +1,83 @@
+import { expect } from '@storybook/test';
+import { act, renderHook } from '@testing-library/react';
+import { RecoilRoot, useRecoilValue } from 'recoil';
+
+import { isKeyboardShortcutMenuOpenedState } from '@/keyboard-shortcut-menu/states/isKeyboardShortcutMenuOpenedState';
+import { AppHotkeyScope } from '@/ui/utilities/hotkey/types/AppHotkeyScope';
+
+import { useKeyboardShortcutMenu } from '../useKeyboardShortcutMenu';
+
+const mockSetHotkeyScopeAndMemorizePreviousScope = jest.fn();
+
+const mockGoBackToPreviousHotkeyScope = jest.fn();
+
+jest.mock('@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope', () => ({
+ usePreviousHotkeyScope: () => ({
+ setHotkeyScopeAndMemorizePreviousScope:
+ mockSetHotkeyScopeAndMemorizePreviousScope,
+ goBackToPreviousHotkeyScope: mockGoBackToPreviousHotkeyScope,
+ }),
+}));
+
+const renderHookConfig = () => {
+ const { result } = renderHook(
+ () => {
+ const isKeyboardShortcutMenuOpened = useRecoilValue(
+ isKeyboardShortcutMenuOpenedState,
+ );
+ return {
+ ...useKeyboardShortcutMenu(),
+ isKeyboardShortcutMenuOpened,
+ };
+ },
+ {
+ wrapper: RecoilRoot,
+ },
+ );
+ return { result };
+};
+
+describe('useKeyboardShortcutMenu', () => {
+ it('should toggle keyboard shortcut menu correctly', async () => {
+ const { result } = renderHookConfig();
+ expect(result.current.toggleKeyboardShortcutMenu).toBeDefined();
+ expect(result.current.isKeyboardShortcutMenuOpened).toBe(false);
+
+ act(() => {
+ result.current.toggleKeyboardShortcutMenu();
+ });
+
+ expect(mockSetHotkeyScopeAndMemorizePreviousScope).toHaveBeenCalledWith(
+ AppHotkeyScope.KeyboardShortcutMenu,
+ );
+ expect(result.current.isKeyboardShortcutMenuOpened).toBe(true);
+
+ act(() => {
+ result.current.toggleKeyboardShortcutMenu();
+ });
+
+ expect(mockSetHotkeyScopeAndMemorizePreviousScope).toHaveBeenCalledWith(
+ AppHotkeyScope.KeyboardShortcutMenu,
+ );
+ expect(result.current.isKeyboardShortcutMenuOpened).toBe(false);
+ });
+
+ it('should open and close keyboard shortcut menu correctly', async () => {
+ const { result } = renderHookConfig();
+ act(() => {
+ result.current.openKeyboardShortcutMenu();
+ });
+
+ expect(mockSetHotkeyScopeAndMemorizePreviousScope).toHaveBeenCalledWith(
+ AppHotkeyScope.KeyboardShortcutMenu,
+ );
+ expect(result.current.isKeyboardShortcutMenuOpened).toBe(true);
+
+ act(() => {
+ result.current.closeKeyboardShortcutMenu();
+ });
+
+ expect(mockGoBackToPreviousHotkeyScope).toHaveBeenCalled();
+ expect(result.current.isKeyboardShortcutMenuOpened).toBe(false);
+ });
+});
diff --git a/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsSettingsPage.test.tsx b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsSettingsPage.test.tsx
new file mode 100644
index 000000000..4faaf5901
--- /dev/null
+++ b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsSettingsPage.test.tsx
@@ -0,0 +1,31 @@
+import { MemoryRouter } from 'react-router-dom';
+import { renderHook } from '@testing-library/react';
+
+import { useIsSettingsPage } from '../useIsSettingsPage';
+
+const getWrapper =
+ (initialIndex: 0 | 1) =>
+ ({ children }: { children: React.ReactNode }) => (
+
+ {children}
+
+ );
+
+describe('useIsSettingsPage', () => {
+ it('should return true for pages which has /settings/ in pathname', () => {
+ const { result } = renderHook(() => useIsSettingsPage(), {
+ wrapper: getWrapper(0),
+ });
+ expect(result.current).toBe(true);
+ });
+
+ it('should return false for other pages which does not have /settings/ in pathname', () => {
+ const { result } = renderHook(() => useIsSettingsPage(), {
+ wrapper: getWrapper(1),
+ });
+ expect(result.current).toBe(false);
+ });
+});
diff --git a/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsTasksPage.test.tsx b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsTasksPage.test.tsx
new file mode 100644
index 000000000..2ecb0b245
--- /dev/null
+++ b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useIsTasksPage.test.tsx
@@ -0,0 +1,31 @@
+import { MemoryRouter } from 'react-router-dom';
+import { renderHook } from '@testing-library/react';
+
+import { useIsTasksPage } from '../useIsTasksPage';
+
+const getWrapper =
+ (initialIndex: 0 | 1) =>
+ ({ children }: { children: React.ReactNode }) => (
+
+ {children}
+
+ );
+
+describe('useIsSettingsPage', () => {
+ it('should return true for pages which has /tasks in pathname', () => {
+ const { result } = renderHook(() => useIsTasksPage(), {
+ wrapper: getWrapper(1),
+ });
+ expect(result.current).toBe(true);
+ });
+
+ it('should return false for other pages which does not have /tasks in pathname', () => {
+ const { result } = renderHook(() => useIsTasksPage(), {
+ wrapper: getWrapper(0),
+ });
+ expect(result.current).toBe(false);
+ });
+});