aboutsummaryrefslogtreecommitdiff
path: root/test/unit/specs/services
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-08-31 22:38:02 +0300
committerHenry Jameson <me@hjkos.com>2019-08-31 22:38:02 +0300
commit18ec13d796c0928d09fa93de4117822d2e35502c (patch)
tree1cfb4d68a246c604396bb64bbba3e69bdf4fe511 /test/unit/specs/services
parentb3e9a5a71819c7d3a4b35c5b6ad551785a7ba44f (diff)
parent018a650166a5dce0878b696359a999ab67634cfc (diff)
Merge remote-tracking branch 'upstream/develop' into docs
* upstream/develop: (193 commits) fix user avatar fallback logic remove dead code make bio textarea resizable vertically only remove dead code remove dead code fix crazy watch logic in conversation show three dot button only if needed hide mute conversation button to guests update keyBy generate idObj at timeline level fix pin showing logic in conversation Show a message when JS is disabled Initialize chat only if user is logged in and it wasn't initialized before i18n/Update Japanese i18n/Update pedantic Japanese sync profile tab state with location query refactor TabSwitcher use better name of controlled prop fix potential bug to render active tab in controlled way remove unused param ...
Diffstat (limited to 'test/unit/specs/services')
-rw-r--r--test/unit/specs/services/date_utils/date_utils.spec.js40
-rw-r--r--test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js23
-rw-r--r--test/unit/specs/services/file_size_format/file_size_format.spec.js66
-rw-r--r--test/unit/specs/services/status_parser/status_parses.spec.js4
-rw-r--r--test/unit/specs/services/version/version.service.spec.js11
5 files changed, 98 insertions, 46 deletions
diff --git a/test/unit/specs/services/date_utils/date_utils.spec.js b/test/unit/specs/services/date_utils/date_utils.spec.js
new file mode 100644
index 00000000..2d61dbac
--- /dev/null
+++ b/test/unit/specs/services/date_utils/date_utils.spec.js
@@ -0,0 +1,40 @@
+import * as DateUtils from 'src/services/date_utils/date_utils.js'
+
+describe('DateUtils', () => {
+ describe('relativeTime', () => {
+ it('returns now with low enough amount of seconds', () => {
+ const futureTime = Date.now() + 20 * DateUtils.SECOND
+ const pastTime = Date.now() - 20 * DateUtils.SECOND
+ expect(DateUtils.relativeTime(futureTime, 30)).to.eql({ num: 0, key: 'time.now' })
+ expect(DateUtils.relativeTime(pastTime, 30)).to.eql({ num: 0, key: 'time.now' })
+ })
+
+ it('rounds down for past', () => {
+ const time = Date.now() - 1.8 * DateUtils.HOUR
+ expect(DateUtils.relativeTime(time)).to.eql({ num: 1, key: 'time.hour' })
+ })
+
+ it('rounds up for future', () => {
+ const time = Date.now() + 1.8 * DateUtils.HOUR
+ expect(DateUtils.relativeTime(time)).to.eql({ num: 2, key: 'time.hours' })
+ })
+
+ it('uses plural when necessary', () => {
+ const time = Date.now() - 3.8 * DateUtils.WEEK
+ expect(DateUtils.relativeTime(time)).to.eql({ num: 3, key: 'time.weeks' })
+ })
+
+ it('works with date string', () => {
+ const time = Date.now() - 4 * DateUtils.MONTH
+ const dateString = new Date(time).toISOString()
+ expect(DateUtils.relativeTime(dateString)).to.eql({ num: 4, key: 'time.months' })
+ })
+ })
+
+ describe('relativeTimeShort', () => {
+ it('returns the short version of the same relative time', () => {
+ const time = Date.now() + 2 * DateUtils.YEAR
+ expect(DateUtils.relativeTimeShort(time)).to.eql({ num: 2, key: 'time.years_short' })
+ })
+ })
+})
diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
index 3d34c5cc..20e03cb0 100644
--- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
+++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
@@ -163,12 +163,6 @@ const makeMockEmojiMasto = (overrides = [{}]) => {
]
}
-parseNotification
-parseUser
-parseStatus
-makeMockStatusQvitter
-makeMockUserQvitter
-
describe('API Entities normalizer', () => {
describe('parseStatus', () => {
describe('QVitter preprocessing', () => {
@@ -206,15 +200,15 @@ describe('API Entities normalizer', () => {
})
it('sets nsfw for statuses with the #nsfw tag', () => {
- const safe = makeMockStatusQvitter({id: '1', text: 'Hello oniichan'})
- const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw'})
+ const safe = makeMockStatusQvitter({ id: '1', text: 'Hello oniichan' })
+ const nsfw = makeMockStatusQvitter({ id: '1', text: 'Hello oniichan #nsfw' })
expect(parseStatus(safe).nsfw).to.eq(false)
expect(parseStatus(nsfw).nsfw).to.eq(true)
})
it('leaves existing nsfw settings alone', () => {
- const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw', nsfw: false})
+ const nsfw = makeMockStatusQvitter({ id: '1', text: 'Hello oniichan #nsfw', nsfw: false })
expect(parseStatus(nsfw).nsfw).to.eq(false)
})
@@ -282,6 +276,13 @@ describe('API Entities normalizer', () => {
expect(parsedUser).to.have.property('description_html').that.contains('<img')
})
+
+ it('adds hide_follows and hide_followers user settings', () => {
+ const user = makeMockUserMasto({ pleroma: { hide_followers: true, hide_follows: false } })
+
+ expect(parseUser(user)).to.have.property('hide_followers', true)
+ expect(parseUser(user)).to.have.property('hide_follows', false)
+ })
})
// We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI
@@ -323,9 +324,9 @@ describe('API Entities normalizer', () => {
describe('MastoAPI emoji adder', () => {
const emojis = makeMockEmojiMasto()
const imageHtml = '<img src="https://example.com/image.png" alt="image" title="image" class="emoji" />'
- .replace(/"/g, '\'')
+ .replace(/"/g, '\'')
const thinkHtml = '<img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" />'
- .replace(/"/g, '\'')
+ .replace(/"/g, '\'')
it('correctly replaces shortcodes in supplied string', () => {
const result = addEmojis('This post has :image: emoji and :thinking: emoji', emojis)
diff --git a/test/unit/specs/services/file_size_format/file_size_format.spec.js b/test/unit/specs/services/file_size_format/file_size_format.spec.js
index 0a5a82b7..e02ac379 100644
--- a/test/unit/specs/services/file_size_format/file_size_format.spec.js
+++ b/test/unit/specs/services/file_size_format/file_size_format.spec.js
@@ -1,34 +1,34 @@
- import fileSizeFormatService from '../../../../../src/services/file_size_format/file_size_format.js'
- describe('fileSizeFormat', () => {
- it('Formats file size', () => {
- const values = [1, 1024, 1048576, 1073741824, 1099511627776]
- const expected = [
- {
- num: 1,
- unit: 'B'
- },
- {
- num: 1,
- unit: 'KiB'
- },
- {
- num: 1,
- unit: 'MiB'
- },
- {
- num: 1,
- unit: 'GiB'
- },
- {
- num: 1,
- unit: 'TiB'
- }
- ]
+import fileSizeFormatService from '../../../../../src/services/file_size_format/file_size_format.js'
+describe('fileSizeFormat', () => {
+ it('Formats file size', () => {
+ const values = [1, 1024, 1048576, 1073741824, 1099511627776]
+ const expected = [
+ {
+ num: 1,
+ unit: 'B'
+ },
+ {
+ num: 1,
+ unit: 'KiB'
+ },
+ {
+ num: 1,
+ unit: 'MiB'
+ },
+ {
+ num: 1,
+ unit: 'GiB'
+ },
+ {
+ num: 1,
+ unit: 'TiB'
+ }
+ ]
- var res = []
- for (var value in values) {
- res.push(fileSizeFormatService.fileSizeFormat(values[value]))
- }
- expect(res).to.eql(expected)
- })
- })
+ var res = []
+ for (var value in values) {
+ res.push(fileSizeFormatService.fileSizeFormat(values[value]))
+ }
+ expect(res).to.eql(expected)
+ })
+})
diff --git a/test/unit/specs/services/status_parser/status_parses.spec.js b/test/unit/specs/services/status_parser/status_parses.spec.js
index 65808d84..7afd5042 100644
--- a/test/unit/specs/services/status_parser/status_parses.spec.js
+++ b/test/unit/specs/services/status_parser/status_parses.spec.js
@@ -1,7 +1,7 @@
-const example = '<div class="status-content">@<a href="https://sealion.club/user/4" class="h-card mention" title="dewoo">dwmatiz</a> <a href="https://social.heldscal.la/file/3deb764ada10ce64a61b7a070b75dac45f86d2d5bf213bf18873da71d8714d86.png" title="https://social.heldscal.la/file/3deb764ada10ce64a61b7a070b75dac45f86d2d5bf213bf18873da71d8714d86.png" class="attachment" id="attachment-159853" rel="nofollow external">https://social.heldscal.la/attachment/159853</a></div>'
-
import { removeAttachmentLinks } from '../../../../../src/services/status_parser/status_parser.js'
+const example = '<div class="status-content">@<a href="https://sealion.club/user/4" class="h-card mention" title="dewoo">dwmatiz</a> <a href="https://social.heldscal.la/file/3deb764ada10ce64a61b7a070b75dac45f86d2d5bf213bf18873da71d8714d86.png" title="https://social.heldscal.la/file/3deb764ada10ce64a61b7a070b75dac45f86d2d5bf213bf18873da71d8714d86.png" class="attachment" id="attachment-159853" rel="nofollow external">https://social.heldscal.la/attachment/159853</a></div>'
+
describe('statusParser.removeAttachmentLinks', () => {
const exampleWithoutAttachmentLinks = '<div class="status-content">@<a href="https://sealion.club/user/4" class="h-card mention" title="dewoo">dwmatiz</a> </div>'
diff --git a/test/unit/specs/services/version/version.service.spec.js b/test/unit/specs/services/version/version.service.spec.js
new file mode 100644
index 00000000..519145ee
--- /dev/null
+++ b/test/unit/specs/services/version/version.service.spec.js
@@ -0,0 +1,11 @@
+import { extractCommit } from 'src/services/version/version.service.js'
+
+describe('extractCommit', () => {
+ it('return short commit hash following "-g" characters', () => {
+ expect(extractCommit('1.0.0-45-g5e7aeebc')).to.eql('5e7aeebc')
+ })
+
+ it('return short commit hash without branch name', () => {
+ expect(extractCommit('1.0.0-45-g5e7aeebc-branch')).to.eql('5e7aeebc')
+ })
+})