import React from 'react'; import { render, screen } from '@testing-library/react'; import { Basic, I18nLabelAsKey, I18nNoTranslation, I18nTranslation, InSourceContext, InSourceContextI18nKey, InSourceContextNoTranslation, InSourceContextWithResource, LabelElement, LabelEmpty, LabelFalse, LabelText, Resource, Source, } from './useTranslateLabel.stories'; describe('useTranslateLabel', () => { it('should compose a translation key from the resource and source', () => { render(); screen.getByText('resources.posts.fields.title'); }); it('should use the resource in the translation key', () => { render(); screen.getByText('resources.comments.fields.title'); }); it('should use the source in the translation key', () => { render(); screen.getByText('resources.posts.fields.date'); }); it('should return null when label is false', () => { render(); expect(screen.queryByText(/title/)).toBeNull(); }); it('should return null when label is empty', () => { render(); expect(screen.queryByText(/title/)).toBeNull(); }); it('should return the label element when provided', () => { render(); screen.getByText('My title'); }); it('should return the label text when provided', () => { render(); screen.getByText('My title'); }); describe('i18n', () => { it('should use the source and resource to create a default translation key', () => { render(); screen.getByText('My Title'); }); it('should use the label as key when provided', () => { render(); screen.getByText('My title'); }); it('should infer a human readable default label when no translation is provided', () => { render(); screen.getByText('Title'); }); }); describe('SourceContext', () => { it('should call getLabel for the default label', () => { render(); screen.getByText('Label for title'); }); it('should use the getLabel return as translation key', () => { render(); screen.getByText('test.title'); }); it('should infer a human readable default label when no translation is provided', () => { render(); screen.getByText('Title'); }); it('should infer a human readable default label when a resource is provided', () => { render(); screen.getByText('Title'); }); }); });