diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-05-01 00:56:06 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-05-01 00:56:06 +0200 |
| commit | a7cf03c192470cbab13edeb1aec99e0c66dede10 (patch) | |
| tree | 581b4430d1de958dcb666bae80a7678332134602 /src/components/topic | |
| parent | 010f307346e525ac2e4239a0549d2c1a4d6d102b (diff) | |
Update / use typescript
Diffstat (limited to 'src/components/topic')
| -rw-r--r-- | src/components/topic/.topic.svelte.icloud | bin | 0 -> 160 bytes | |||
| -rw-r--r-- | src/components/topic/.topic.test.js.icloud | bin | 0 -> 161 bytes | |||
| -rw-r--r-- | src/components/topic/topic.svelte | 44 | ||||
| -rw-r--r-- | src/components/topic/topic.test.js | 164 |
4 files changed, 0 insertions, 208 deletions
diff --git a/src/components/topic/.topic.svelte.icloud b/src/components/topic/.topic.svelte.icloud Binary files differnew file mode 100644 index 0000000..e60b61c --- /dev/null +++ b/src/components/topic/.topic.svelte.icloud diff --git a/src/components/topic/.topic.test.js.icloud b/src/components/topic/.topic.test.js.icloud Binary files differnew file mode 100644 index 0000000..1e163ec --- /dev/null +++ b/src/components/topic/.topic.test.js.icloud diff --git a/src/components/topic/topic.svelte b/src/components/topic/topic.svelte deleted file mode 100644 index c0dbfbc..0000000 --- a/src/components/topic/topic.svelte +++ /dev/null @@ -1,44 +0,0 @@ -<script> - export let topic; - - import { _ } from 'svelte-i18n'; - import Post from '$/components/post/post.svelte'; - import { readableTime } from '$/utils/readable_time.js'; - - $: remainingTime = topic.updated_at + topic.ttl - Date.now(); - $: remaining = readableTime(remainingTime); -</script> - -<div class="h-entry" title={$_('topic.title')}> - <h1 class="p-name">{topic.title}</h1> - <aside class="topic-meta" title={$_('topic.metadata_title')}> - {#if topic.forum} - <span class="topic-location"> - {$_('topic.category_location')} - <a href="/f/{topic.forum.id}" class="p-category"> - {topic.forum.glyph} {$_(topic.forum.label)} - </a>. - </span> - {/if} - <span class="topic-ttl"> - <a class="u-url u-uid" title={$_('topic.permalink_title')} href="/t/{topic.id}"> - ({$_('topic.remaining_time', { - values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) } - })}) - </a>. - </span> - </aside> - {#if topic.tags.length > 0} - <aside class="topic-tags" title={$_('topic.tags_title')}> - {$_('topic.tags_location')} - {#each topic.tags as tag} - <a href="/g/{tag.id}" class="p-category"> - {tag.id}<span class="tag-weight">({tag.weight})</span> - </a>{' '} - {/each} - </aside> - {/if} - {#each topic.posts as post, index} - <Post {post} {index} count={topic.posts.length} /> - {/each} -</div> diff --git a/src/components/topic/topic.test.js b/src/components/topic/topic.test.js deleted file mode 100644 index b4071b5..0000000 --- a/src/components/topic/topic.test.js +++ /dev/null @@ -1,164 +0,0 @@ -import '@testing-library/jest-dom/extend-expect'; - -import { addMessages } from 'svelte-i18n'; - -import { cleanup, render } from '@testing-library/svelte'; -import '$/config/i18n'; - -import Topic from './topic.svelte'; - -const internals = { - results: null, - basicTopic: { - id: 'b1a4f8d1-4d16-4872-b391-fda6a0e9012d', - title: 'I sure am a test topic', - ttl: 160 * 1000, - updated_at: Date.now(), - forum: { - id: 'diversion', - glyph: '⏃', - label: 'test_forums.diversion' - }, - tags: [ - { - id: 'fish', - weight: 40 - }, - { - id: 'statue', - weight: 5 - } - ], - posts: [ - { - id: '413a74db-9473-4bac-8698-da9452c05854', - text: 'This is the first post', - created_at: Date.UTC(1999, 7, 1, 8, 8, 2, 111).valueOf(), - author: { - handle: 'past_user', - id: 'c76d3e51-76ac-4e84-a1b2-2eee9abd68b3' - } - }, - { - id: '821ff177-5250-406f-9431-1a8097b35430', - text: 'This response came later', - created_at: Date.UTC(2038, 1, 2, 3, 4, 6, 789).valueOf(), - author: { - handle: 'future_user', - id: 'cb9307cb-77e9-4c55-bbe7-dbbf88737358' - } - } - ] - }, - topicWithoutForum: { - id: '9715e9ee-0d63-4b50-b613-826ef2791728', - title: 'This topic, no forums', - ttl: 160 * 1000, - updated_at: Date.now(), - tags: [ - { - id: 'cauliflower', - weight: 33 - } - ], - posts: [] - } -}; - -describe('Topic component', () => { - - beforeAll(() => { - - addMessages('en', { - 'test_forums.diversion': 'Diversion' - }); - }); - - beforeEach(() => { - - internals.results = render(Topic, { props: { - topic: internals.basicTopic - } }); - }); - - test('Should show the topic title', () => { - - expect(internals.results.getByText('I sure am a test topic')) - .toBeVisible(); - }); - test('Should display remaining time in readable format', () => { - - expect(internals.results.getByText(/2 minutes remaining/)) - .toBeVisible(); - }); - test('Remaining time should be a permalink to the topic', () => { - - expect(internals.results.getByText(/2 minutes remaining/).closest('a')) - .toHaveAttribute('href', '/t/b1a4f8d1-4d16-4872-b391-fda6a0e9012d'); - }); - - test('Should show text for all posts', () => { - - expect(internals.results.getByText('This is the first post')) - .toBeVisible(); - expect(internals.results.getByText('This response came later')) - .toBeVisible(); - }); - - test('Should send index and count to posts', () => { - - expect(internals.results.getByTitle('Post 1 of 2 by past_user')) - .toBeVisible(); - expect(internals.results.getByTitle('Post 2 of 2 by future_user')) - .toBeVisible(); - }); - - describe('Forum link', () => { - - test('Should show forum if the post has one', () => { - - expect(internals.results.getByText(/^\s*⏃\s*Diversion\s*$/)) - .toBeVisible(); - }); - - test('Forum text should be a permalink to the forum', () => { - - expect(internals.results.getByText(/^\s*⏃\s*Diversion\s*$/).closest('a')) - .toHaveAttribute('href', '/f/diversion'); - }); - - test('Should not show forum if the post doesn\'t have one', () => { - - cleanup(); - internals.results = render(Topic, { props: { - topic: internals.topicWithoutForum - } }); - - expect(internals.results.queryByText(/^\s*⏃\s*Diversion\s*$/)) - .toBe(null); - }); - }); - - describe('Tag listing', () => { - - test('Should show topic tags', () => { - - expect(internals.results.getByText('fish')) - .toBeVisible(); - expect(internals.results.getByText('fish')) - .toHaveTextContent('fish(40)'); - expect(internals.results.getByText('statue')) - .toBeVisible(); - expect(internals.results.getByText('statue')) - .toHaveTextContent('statue(5)'); - }); - - test('Tag text should be a permalink to the tag', () => { - - expect(internals.results.getByText('fish').closest('a')) - .toHaveAttribute('href', '/g/fish'); - expect(internals.results.getByText('statue').closest('a')) - .toHaveAttribute('href', '/g/statue'); - }); - }); -}); |