diff --git a/src/js/components/header/Header.test.tsx b/src/js/components/header/Header.test.tsx new file mode 100644 index 00000000..1743b773 --- /dev/null +++ b/src/js/components/header/Header.test.tsx @@ -0,0 +1,29 @@ +import { cleanup, render, screen } from '@testing-library/preact'; +import { afterEach, describe, expect, it } from 'vitest'; + +import localState from '@/state/LocalState.ts'; +import { translate as t } from '@/translations/Translation.mjs'; + +import Header from './Header.tsx'; + +describe('Header Component Rendering', () => { + afterEach(cleanup); + + it('renders iris logo for homepage', () => { + localState.get('activeRoute').put('/'); + render(
); + + const logo = screen.getByText('iris'); + expect(logo).not.toBeNull(); + }); + + it('renders login and signup buttons when not logged in', () => { + render(
); + + const loginBtn = screen.getByText(t('log_in')); + expect(loginBtn).not.toBeNull(); + + const signupBtn = screen.getByText(t('sign_up')); + expect(signupBtn).not.toBeNull(); + }); +}); diff --git a/src/js/components/Header.tsx b/src/js/components/header/Header.tsx similarity index 94% rename from src/js/components/Header.tsx rename to src/js/components/header/Header.tsx index e760d5bf..38d59335 100644 --- a/src/js/components/Header.tsx +++ b/src/js/components/header/Header.tsx @@ -3,16 +3,15 @@ import { Cog8ToothIcon, HeartIcon } from '@heroicons/react/24/outline'; import { ArrowLeftIcon, HeartIcon as HeartIconFull } from '@heroicons/react/24/solid'; import { Link, route } from 'preact-router'; -import Component from '../BaseComponent'; -import Key from '../nostr/Key'; -import Relays from '../nostr/Relays'; -import localState from '../state/LocalState.ts'; -import { translate as t } from '../translations/Translation.mjs'; -import Icons from '../utils/Icons'; - -import Show from './helpers/Show'; -import SearchBox from './searchbox/SearchBox.tsx'; -import Name from './user/Name'; +import Component from '../../BaseComponent.ts'; +import Key from '../../nostr/Key.ts'; +import Relays from '../../nostr/Relays.ts'; +import localState from '../../state/LocalState.ts'; +import { translate as t } from '../../translations/Translation.mjs'; +import Icons from '../../utils/Icons.tsx'; +import Show from '../helpers/Show.tsx'; +import SearchBox from '../searchbox/SearchBox.tsx'; +import Name from '../user/Name.tsx'; declare global { interface Window { diff --git a/src/js/views/About.tsx b/src/js/views/About.tsx index 3c377345..0294cb46 100644 --- a/src/js/views/About.tsx +++ b/src/js/views/About.tsx @@ -4,7 +4,7 @@ import Show from '@/components/helpers/Show'; import { RouteProps } from '@/views/types'; import Follow from '../components/buttons/Follow'; -import Header from '../components/Header'; +import Header from '../components/header/Header.tsx'; import Avatar from '../components/user/Avatar'; import Name from '../components/user/Name'; import { translate as t } from '../translations/Translation.mjs'; diff --git a/src/js/views/KeyConverter.tsx b/src/js/views/KeyConverter.tsx index 3aef9670..1c4c09d5 100644 --- a/src/js/views/KeyConverter.tsx +++ b/src/js/views/KeyConverter.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { RouteProps } from '@/views/types.ts'; -import Header from '../components/Header'; +import Header from '../components/header/Header.tsx'; import Key from '../nostr/Key'; import { translate as t } from '../translations/Translation.mjs'; diff --git a/src/js/views/Subscribe.tsx b/src/js/views/Subscribe.tsx index dc132a2a..898f770f 100644 --- a/src/js/views/Subscribe.tsx +++ b/src/js/views/Subscribe.tsx @@ -1,6 +1,6 @@ import { RouteProps } from '@/views/types'; -import Header from '../components/Header'; +import Header from '../components/header/Header.tsx'; import { translate as t } from '../translations/Translation.mjs'; const Subscribe: React.FC = () => ( diff --git a/src/js/views/View.tsx b/src/js/views/View.tsx index ae95ab20..55d2e6ac 100644 --- a/src/js/views/View.tsx +++ b/src/js/views/View.tsx @@ -2,7 +2,7 @@ import debounce from 'lodash/debounce'; import { useEffect, useRef } from 'preact/hooks'; import ErrorBoundary from '../components/ErrorBoundary'; -import Header from '../components/Header'; +import Header from '../components/header/Header.tsx'; import Show from '../components/helpers/Show'; import Search from './Search'; diff --git a/src/js/views/feeds/Notifications.tsx b/src/js/views/feeds/Notifications.tsx index a6b788f3..5f0ff597 100644 --- a/src/js/views/feeds/Notifications.tsx +++ b/src/js/views/feeds/Notifications.tsx @@ -6,6 +6,7 @@ import EventDB from '@/nostr/EventDB'; import Events from '@/nostr/Events'; import Key from '@/nostr/Key'; import { RouteProps } from '@/views/types.ts'; +import View from '@/views/View.tsx'; import Feed from '../../components/feed/Feed'; import Session from '../../nostr/Session'; @@ -60,13 +61,15 @@ const Notifications: React.FC = () => { }, [updateNotificationsLastOpened]); return ( - + + + ); }; diff --git a/src/js/views/login/Login.test.tsx b/src/js/views/login/Login.test.tsx index 7fbf6715..b040f902 100644 --- a/src/js/views/login/Login.test.tsx +++ b/src/js/views/login/Login.test.tsx @@ -7,7 +7,7 @@ import Login from '@/views/login/Login.tsx'; describe('Login View Rendering', () => { afterEach(cleanup); - it('renders login form', () => { + it('renders login form', async () => { render(); const loginInput = screen.getByPlaceholderText(t('whats_your_name')); diff --git a/src/js/views/profile/EditProfile.tsx b/src/js/views/profile/EditProfile.tsx index 0d2a3181..b6f5d7bf 100644 --- a/src/js/views/profile/EditProfile.tsx +++ b/src/js/views/profile/EditProfile.tsx @@ -6,7 +6,7 @@ import { ID } from '@/utils/UniqueIds.ts'; import { RouteProps } from '@/views/types.ts'; import Upload from '../../components/buttons/Upload.tsx'; -import Header from '../../components/Header.tsx'; +import Header from '../../components/header/Header.tsx'; import SafeImg from '../../components/SafeImg.tsx'; import Key from '../../nostr/Key.ts'; import SocialNetwork from '../../nostr/SocialNetwork.ts'; diff --git a/src/js/views/settings/Settings.tsx b/src/js/views/settings/Settings.tsx index c9c7c49c..10b3e002 100644 --- a/src/js/views/settings/Settings.tsx +++ b/src/js/views/settings/Settings.tsx @@ -1,4 +1,4 @@ -import Header from '../../components/Header'; +import Header from '../../components/header/Header.tsx'; import SettingsContent from './SettingsContent'; import SettingsMenu from './SettingsMenu';