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();
+ });
});