X-Git-Url: https://git.r.bdr.sh/rbdr/forum/blobdiff_plain/a7cf03c192470cbab13edeb1aec99e0c66dede10..d2cd7f1b4c318ac8587ab3dc1dec4a44b6d592fe:/src/lib/components/post/post.test.ts?ds=sidebyside diff --git a/src/lib/components/post/post.test.ts b/src/lib/components/post/post.test.ts index d43583e..4351f3f 100644 --- a/src/lib/components/post/post.test.ts +++ b/src/lib/components/post/post.test.ts @@ -10,119 +10,110 @@ import '$lib/i18n'; import Post from './post.svelte'; const internals = { - basicPost: { - id: 'e5a19d53-4c9a-4be8-afa5-00942ea3afa4', - text: 'This is an example post qwerty', - created_at: Date.UTC(2021, 3, 19, 6, 6, 6, 666).valueOf(), - author: { - handle: 'very_cool_user', - id: 'b01bdb48-4b5e-46a4-97f3-6db789bcd33b' - }, - topic: { - id: '35d3c3eb-e486-42ef-994c-d8ab1f1e167a', - title: 'Parent topic, yes' - } - }, - postWithoutTopic: { - id: '9e52e38e-9007-4a20-bbf1-cea4e2f950f3', - text: 'This is a post without a topic', - created_at: Date.UTC(2022, 8, 21, 4, 3, 1, 340).valueOf(), - author: { - handle: 'my_normal_user', - id: '121f8f97-de02-4102-b25d-f34fd619009b' - } - }, - - results: null + basicPost: { + id: 'e5a19d53-4c9a-4be8-afa5-00942ea3afa4', + text: 'This is an example post qwerty', + created_at: Date.UTC(2021, 3, 19, 6, 6, 6, 666).valueOf(), + author: { + handle: 'very_cool_user', + id: 'b01bdb48-4b5e-46a4-97f3-6db789bcd33b' + }, + topic: { + id: '35d3c3eb-e486-42ef-994c-d8ab1f1e167a', + title: 'Parent topic, yes' + } + }, + postWithoutTopic: { + id: '9e52e38e-9007-4a20-bbf1-cea4e2f950f3', + text: 'This is a post without a topic', + created_at: Date.UTC(2022, 8, 21, 4, 3, 1, 340).valueOf(), + author: { + handle: 'my_normal_user', + id: '121f8f97-de02-4102-b25d-f34fd619009b' + } + }, + + results: null }; describe('Post component', () => { - - beforeEach(() => { - - internals.results = render(Post, { props: { - post: internals.basicPost - } }); - }); - - test('Should display the text of the post', () => { - - expect(internals.results.getByText('This is an example post qwerty')).toBeVisible(); - }); - - test('Should display date of the post', () => { - - expect(internals.results.getByText('2021-04-19T06:06:06.666Z')) - .toBeVisible(); - }); - - test('Date of post should be a permalink to the post', () => { - - expect(internals.results.getByText('2021-04-19T06:06:06.666Z').closest('a')) - .toHaveAttribute('href', '/p/e5a19d53-4c9a-4be8-afa5-00942ea3afa4'); - }); - - test('Should display the glyph of the post author', () => { - - const glyphicon = internals.results.getByRole('img'); - - expect(glyphicon) - .toBeVisible(); - expect(glyphicon) - .toHaveTextContent(/^. . . .$/); - }); - - test('Should display author handle', () => { - - expect(internals.results.getByText('very_cool_user')) - .toBeVisible(); - }); - - test('Author handle should have a permalink to topic', () => { - - expect(internals.results.getByText('very_cool_user').closest('a')) - .toHaveAttribute('href', '/a/very_cool_user'); - }); - - test('Should display parent topic title', () => { - - expect(internals.results.getByText('Parent topic, yes')) - .toBeVisible(); - }); - - test('Parent topic title should have a permalink to topic', () => { - - expect(internals.results.getByText('Parent topic, yes').closest('a')) - .toHaveAttribute('href', '/t/35d3c3eb-e486-42ef-994c-d8ab1f1e167a'); - }); - - test('Parent topic title should have a permalink to topic', () => { - - cleanup(); - internals.results = render(Post, { props: { - post: internals.postWithoutTopic - } }); - - expect(internals.results.queryByText('Parent topic, yes')) - .toBe(null); - }); - - test('It should default to 1/1 when no index or count is passed', () => { - - expect(internals.results.getByTitle('Post 1 of 1 by very_cool_user')) - .toBeVisible(); - }); - - test('Parent topic title should have a permalink to topic', () => { - - cleanup(); - internals.results = render(Post, { props: { - index: 2, - count: 5, - post: internals.postWithoutTopic - } }); - - expect(internals.results.getByTitle('Post 3 of 5 by my_normal_user')) - .toBeVisible(); - }); + beforeEach(() => { + internals.results = render(Post, { + props: { + post: internals.basicPost + } + }); + }); + + test('Should display the text of the post', () => { + expect(internals.results.getByText('This is an example post qwerty')).toBeVisible(); + }); + + test('Should display date of the post', () => { + expect(internals.results.getByText('2021-04-19T06:06:06.666Z')).toBeVisible(); + }); + + test('Date of post should be a permalink to the post', () => { + expect(internals.results.getByText('2021-04-19T06:06:06.666Z').closest('a')).toHaveAttribute( + 'href', + '/p/e5a19d53-4c9a-4be8-afa5-00942ea3afa4' + ); + }); + + test('Should display the glyph of the post author', () => { + const glyphicon = internals.results.getByRole('img'); + + expect(glyphicon).toBeVisible(); + expect(glyphicon).toHaveTextContent(/^. . . .$/); + }); + + test('Should display author handle', () => { + expect(internals.results.getByText('very_cool_user')).toBeVisible(); + }); + + test('Author handle should have a permalink to topic', () => { + expect(internals.results.getByText('very_cool_user').closest('a')).toHaveAttribute( + 'href', + '/a/very_cool_user' + ); + }); + + test('Should display parent topic title', () => { + expect(internals.results.getByText('Parent topic, yes')).toBeVisible(); + }); + + test('Parent topic title should have a permalink to topic', () => { + expect(internals.results.getByText('Parent topic, yes').closest('a')).toHaveAttribute( + 'href', + '/t/35d3c3eb-e486-42ef-994c-d8ab1f1e167a' + ); + }); + + test('Parent topic title should have a permalink to topic', () => { + cleanup(); + internals.results = render(Post, { + props: { + post: internals.postWithoutTopic + } + }); + + expect(internals.results.queryByText('Parent topic, yes')).toBe(null); + }); + + test('It should default to 1/1 when no index or count is passed', () => { + expect(internals.results.getByTitle('Post 1 of 1 by very_cool_user')).toBeVisible(); + }); + + test('Parent topic title should have a permalink to topic', () => { + cleanup(); + internals.results = render(Post, { + props: { + index: 2, + count: 5, + post: internals.postWithoutTopic + } + }); + + expect(internals.results.getByTitle('Post 3 of 5 by my_normal_user')).toBeVisible(); + }); });