diff --git a/code-examples/components-as-functions.example b/code-examples/components-as-functions.example index 7f55c9a..5cc9d7f 100644 --- a/code-examples/components-as-functions.example +++ b/code-examples/components-as-functions.example @@ -1,10 +1,9 @@ -Vue.component('lesson-title', { - props: ['title'], - template: '{{ title }}' -}) +const myComponent = () => ( +
Hello World!
+) function lessonTitle(title) { - return document.createElement('span').setAttribute('text', title); + return document.createElement('span').setAttribute('text', title) } const fib = (n) => { diff --git a/code-examples/fib-final.example b/code-examples/fib-final.example index 024e941..bf4908c 100644 --- a/code-examples/fib-final.example +++ b/code-examples/fib-final.example @@ -7,7 +7,7 @@ const fib = (n) => { if (n === 0 || n === 1) { return n } - return makeAdder(fib(makeSubtracter(1)(n) + fib(makeSubtracter(2)(n))(n) + return makeAdder(fib(makeSubtracter(1)(n)))(fib(makeSubtracter(2)(n))) } export default { fib } diff --git a/code-examples/ltr-basic-test.example b/code-examples/ltr-basic-test.example new file mode 100644 index 0000000..85ef98c --- /dev/null +++ b/code-examples/ltr-basic-test.example @@ -0,0 +1,15 @@ +import {render, screen} from '@testing-library/react' +import userEvent from '@testing-library/user-event' +import Greeter from './greeter' + +it('displays a greeting', async () => { + // Arrange + const name = "World" + render() + + // Act + await screen.findByRole('heading') + + // Assert + expect(screen.getByRole('heading')).toHaveTextContent(`Hello ${name}`) +}) diff --git a/code-examples/ltr-fake-timers.example b/code-examples/ltr-fake-timers.example new file mode 100644 index 0000000..f4ea6cc --- /dev/null +++ b/code-examples/ltr-fake-timers.example @@ -0,0 +1,12 @@ +describe('my fake timers', () => { + beforeEach(() => { + jest.useFakeTimers() + }) + + it('runs setTimeout', ...) + + afterEach(() => { + jest.runOnlyPendingTimers() + jest.useRealTimers() + }) +}) diff --git a/code-examples/ltr-mock-test.example b/code-examples/ltr-mock-test.example new file mode 100644 index 0000000..3a7eb27 --- /dev/null +++ b/code-examples/ltr-mock-test.example @@ -0,0 +1,19 @@ +import {render, screen} from '@testing-library/react' +import userEvent from '@testing-library/user-event' +import Greeter from './greeter' + +jest.mock('react-i18next', () => ({ + useTranslation: () => ({ t: (str: string) => 'Привіт' }) +})) + +test('displays a greeting', async () => { + // Arrange + const name = "Світ" + render() + + // Act + await screen.findByRole('heading') + + // Assert + expect(screen.getByRole('heading')).toHaveTextContent(`Привіт ${name}`) +}) diff --git a/code-examples/ltr-screen-queries.example b/code-examples/ltr-screen-queries.example new file mode 100644 index 0000000..eee7b0a --- /dev/null +++ b/code-examples/ltr-screen-queries.example @@ -0,0 +1,13 @@ +// Queries Accessible to Everyone +screen.getByRole('button', { hidden: true }) +screen.getByLabelText('Username') +screen.getByPlaceholderText('Username') +screen.getByText(/about/i) +screen.getByDisplayValue('Alaska') + +// Semantic Queries +screen.getByAltText(/incredibles.*? poster/i) +screen.getByTitle('Delete') + +// Test IDs +screen.getByTestId('custom-element') diff --git a/code-examples/ltr-screen-query-types.example b/code-examples/ltr-screen-query-types.example new file mode 100644 index 0000000..56cd5e4 --- /dev/null +++ b/code-examples/ltr-screen-query-types.example @@ -0,0 +1,11 @@ +screen.getByRole('spinbutton', {value: {now: 5}}) +// + +screen.getAllByRole('spinbutton', {value: {min: 0}}) +// [ +// , +// +// ] + +screen.queryByRole('spinbutton', {value: {now: 5}}) +// null \ No newline at end of file diff --git a/code-examples/ltr-spies-test.example b/code-examples/ltr-spies-test.example new file mode 100644 index 0000000..4279767 --- /dev/null +++ b/code-examples/ltr-spies-test.example @@ -0,0 +1,15 @@ +import {render, screen} from '@testing-library/react' +import userEvent from '@testing-library/user-event' +import Button from './button' + +test('calls the onClick handler', async () => { + // Arrange + const handleClick = jest.fn(); + render(