Return

All tests / LangSelect index.tsx

90.9% Statements 10/11
100% Branches 0/0
66.66% Functions 2/3
90% Lines 9/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461x 1x 1x 1x               1x 1x 1x                                       3x                     1x  
import { useRouter } from 'next/router';
import { useIntl } from 'react-intl';
import styles from './langselect.module.css';
import { messages } from '../../../src/intl/translations';
 
/**
 * @example
 *     <LangSelect />;
 *
 * @returns {JSX.Element}
 */
const LangeSelect = () => {
    const { formatMessage: f } = useIntl();
    const router = useRouter();
 
    return (
        <div className={styles.lang_container} data-testid="lang-select">
            <label className={styles.lang_label} htmlFor="lang">
                {f({ id: 'settings.lang.preferred' })}
            </label>
            <select
                id="lang"
                name="lang"
                className={styles.lang_select}
                size={Object.keys(messages).length}
                defaultValue={router.locale}
                onChange={(e) => {
                    router.push(router.pathname, router.pathname, {
                        locale: e.target.value,
                    });
                }}
            >
                {Object.entries(messages).map(([key, value]) => {
                    return (
                        <option key={key} value={key}>
                            {value.language}
                        </option>
                    );
                })}
            </select>
        </div>
    );
};
 
export default LangeSelect;