From d415a432d233a80dd21bd12118fd3a9e7cac3dd7 Mon Sep 17 00:00:00 2001 From: crockwave Date: Fri, 10 Jul 2020 18:45:10 -0500 Subject: [PATCH] test edits --- app/soapbox/__fixtures__/markers.json | 18 ++ app/soapbox/__fixtures__/notification.json | 217 ++++++++++++++++++ .../reducers/__tests__/notifications-test.js | 161 ++++++++++++- 3 files changed, 391 insertions(+), 5 deletions(-) create mode 100644 app/soapbox/__fixtures__/markers.json create mode 100644 app/soapbox/__fixtures__/notification.json diff --git a/app/soapbox/__fixtures__/markers.json b/app/soapbox/__fixtures__/markers.json new file mode 100644 index 000000000..ba3f5f882 --- /dev/null +++ b/app/soapbox/__fixtures__/markers.json @@ -0,0 +1,18 @@ +{ + "notifications": { + "last_read_id": "35098814", + "version": 361, + "updated_at": "2019-11-26T22:37:25.239Z", + "pleroma": { + "unread_count": 3 + } + }, + "home": { + "last_read_id": "103206604258487607", + "version": 468, + "updated_at": "2019-11-26T22:37:25.235Z", + "pleroma": { + "unread_count": 32 + } + } +} diff --git a/app/soapbox/__fixtures__/notification.json b/app/soapbox/__fixtures__/notification.json new file mode 100644 index 000000000..af8769914 --- /dev/null +++ b/app/soapbox/__fixtures__/notification.json @@ -0,0 +1,217 @@ +{ + "account": { + "acct": "seanking", + "avatar": "https://gleasonator.com/images/avi.png", + "avatar_static": "https://gleasonator.com/images/avi.png", + "bot": false, + "created_at": "2020-05-24T01:46:12.000Z", + "display_name": "Sean King", + "emojis": [], + "fields": [], + "followers_count": 8, + "following_count": 4, + "header": "https://gleasonator.com/images/banner.png", + "header_static": "https://gleasonator.com/images/banner.png", + "id": "9vMAje101ngtjlMj7w", + "locked": false, + "note": "Hi, I'm Sean King, Founder and President of Sandia Mesa. I'll be here to try out new features and help test out some with Soapbox FE.", + "pleroma": { + "background_image": null, + "confirmation_pending": true, + "deactivated": false, + "hide_favorites": true, + "hide_followers": false, + "hide_followers_count": false, + "hide_follows": false, + "hide_follows_count": false, + "is_admin": false, + "is_moderator": false, + "relationship": { + "blocked_by": false, + "blocking": false, + "domain_blocking": false, + "endorsed": false, + "followed_by": true, + "following": true, + "id": "9vMAje101ngtjlMj7w", + "muting": false, + "muting_notifications": false, + "requested": false, + "showing_reblogs": true, + "subscribing": false + }, + "skip_thread_containment": false, + "tags": [] + }, + "source": { + "fields": [], + "note": "Hi, I'm Sean King, Founder and President of Sandia Mesa. I'll be here to try out new features and help test out some with Soapbox FE.", + "pleroma": { + "actor_type": "Person", + "discoverable": false + }, + "sensitive": false + }, + "statuses_count": 15, + "url": "https://gleasonator.com/users/seanking", + "username": "seanking" + }, + "created_at": "2020-06-10T02:54:39.000Z", + "emoji": "😢", + "id": "10744", + "pleroma": { + "is_seen": false + }, + "status": { + "account": { + "acct": "alex", + "avatar": "https://media.gleasonator.com/accounts/avatars/000/000/001/original/1a630e4c4c64c948.jpg", + "avatar_static": "https://media.gleasonator.com/accounts/avatars/000/000/001/original/1a630e4c4c64c948.jpg", + "bot": false, + "created_at": "2020-01-08T01:25:43.000Z", + "display_name": "Alex Gleason", + "emojis": [], + "fields": [ + { + "name": "Website", + "value": "https://alexgleason.me" + }, + { + "name": "Pleroma+Soapbox", + "value": "https://soapbox.pub" + }, + { + "name": "Email", + "value": "alex@alexgleason.me" + }, + { + "name": "Gender identity", + "value": "Soyboy" + } + ], + "follow_requests_count": 0, + "followers_count": 474, + "following_count": 1083, + "header": "https://media.gleasonator.com/accounts/headers/000/000/001/original/9d0e4dbf1c9dbc8f.png", + "header_static": "https://media.gleasonator.com/accounts/headers/000/000/001/original/9d0e4dbf1c9dbc8f.png", + "id": "9v5bmRalQvjOy0ECcC", + "locked": false, + "note": "Fediverse developer. I come in peace. #vegan #freeculture #atheist #antiporn #gendercritical. Boosts ≠ endorsements.", + "pleroma": { + "allow_following_move": true, + "background_image": null, + "confirmation_pending": false, + "deactivated": false, + "hide_favorites": true, + "hide_followers": false, + "hide_followers_count": false, + "hide_follows": false, + "hide_follows_count": false, + "is_admin": true, + "is_moderator": false, + "notification_settings": { + "followers": true, + "follows": true, + "non_followers": true, + "non_follows": true, + "privacy_option": false + }, + "relationship": { + "blocked_by": false, + "blocking": false, + "domain_blocking": false, + "endorsed": false, + "followed_by": false, + "following": false, + "id": "9v5bmRalQvjOy0ECcC", + "muting": false, + "muting_notifications": false, + "requested": false, + "showing_reblogs": true, + "subscribing": false + }, + "skip_thread_containment": false, + "tags": [], + "unread_conversation_count": 25 + }, + "source": { + "fields": [ + { + "name": "Website", + "value": "https://alexgleason.me" + }, + { + "name": "Pleroma+Soapbox", + "value": "https://soapbox.pub" + }, + { + "name": "Email", + "value": "alex@alexgleason.me" + }, + { + "name": "Gender identity", + "value": "Soyboy" + } + ], + "note": "Fediverse developer. I come in peace. #vegan #freeculture #atheist #antiporn #gendercritical. Boosts ≠ endorsements.", + "pleroma": { + "actor_type": "Person", + "discoverable": false, + "no_rich_text": false, + "show_role": true + }, + "privacy": "public", + "sensitive": false + }, + "statuses_count": 4857, + "url": "https://gleasonator.com/users/alex", + "username": "alex" + }, + "application": { + "name": "Web", + "website": null + }, + "bookmarked": false, + "card": null, + "content": "At 10.72% test coverage, Soapbox FE now has 2x more than MastoFE, which only has 4.21%.

Pleroma FE doesn't seem to report coverage, but I suspect it's better than both of these combined.

I don't know how Mastodon got away with not writing tests for so long, but I feel like there could be an entire release dedicated only to going back and writing missing tests... jesus.", + "created_at": "2020-06-10T01:29:20.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 4, + "id": "9vvNxoo5EFbbnfdXQu", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [], + "muted": false, + "pinned": false, + "pleroma": { + "content": { + "text/plain": "At 10.72% test coverage, Soapbox FE now has 2x more than MastoFE, which only has 4.21%.Pleroma FE doesn't seem to report coverage, but I suspect it's better than both of these combined.I don't know how Mastodon got away with not writing tests for so long, but I feel like there could be an entire release dedicated only to going back and writing missing tests... jesus." + }, + "conversation_id": 1168229, + "direct_conversation_id": null, + "emoji_reactions": [], + "expires_at": null, + "in_reply_to_account_acct": null, + "local": true, + "spoiler_text": { + "text/plain": "" + }, + "thread_muted": false + }, + "poll": null, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://gleasonator.com/objects/aa294f83-5a6c-4d2b-ba20-2b8bf69a82ba", + "url": "https://gleasonator.com/notice/9vvNxoo5EFbbnfdXQu", + "visibility": "public" + }, + "type": "pleroma:emoji_reaction" +} diff --git a/app/soapbox/reducers/__tests__/notifications-test.js b/app/soapbox/reducers/__tests__/notifications-test.js index d805a2cc9..4accbba2c 100644 --- a/app/soapbox/reducers/__tests__/notifications-test.js +++ b/app/soapbox/reducers/__tests__/notifications-test.js @@ -1,10 +1,12 @@ -import { - NOTIFICATIONS_EXPAND_SUCCESS, -} from 'soapbox/actions/notifications'; +import * as actions from 'soapbox/actions/notifications'; import reducer from '../notifications'; import notifications from 'soapbox/__fixtures__/notifications.json'; +import markers from 'soapbox/__fixtures__/markers.json'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { take } from 'lodash'; +import { SAVE_MARKERS_SUCCESS } from 'soapbox/actions/markers'; +import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS } from 'soapbox/actions/accounts'; +import notification from 'soapbox/__fixtures__/notification.json'; describe('notifications reducer', () => { it('should return the initial state', () => { @@ -20,10 +22,10 @@ describe('notifications reducer', () => { })); }); - test('NOTIFICATIONS_EXPAND_SUCCESS', () => { + it('should handle NOTIFICATIONS_EXPAND_SUCCESS', () => { const state = undefined; const action = { - type: NOTIFICATIONS_EXPAND_SUCCESS, + type: actions.NOTIFICATIONS_EXPAND_SUCCESS, notifications: take(notifications, 3), next: null, skipLoading: true, @@ -68,4 +70,153 @@ describe('notifications reducer', () => { })); }); + it('should handle SAVE_MARKERS_SUCCESS', () => { + const state = ImmutableMap({ + unread: 1, + lastRead: '35098811', + }); + const action = { + type: SAVE_MARKERS_SUCCESS, + markers: markers, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + unread: 3, + lastRead: '35098814', + })); + }); + + it('should handle NOTIFICATIONS_EXPAND_REQUEST', () => { + const state = ImmutableMap({ + isLoading: false, + }); + const action = { + type: actions.NOTIFICATIONS_EXPAND_REQUEST, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + isLoading: true, + })); + }); + + it('should handle NOTIFICATIONS_EXPAND_FAIL', () => { + const state = ImmutableMap({ + isLoading: true, + }); + const action = { + type: actions.NOTIFICATIONS_EXPAND_FAIL, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + isLoading: false, + })); + }); + + it('should handle NOTIFICATIONS_FILTER_SET', () => { + const state = ImmutableMap({ + items: ImmutableList([ + ImmutableMap({ + id: '10744', + type: 'pleroma:emoji_reaction', + account: '9vMAje101ngtjlMj7w', + created_at: '2020-06-10T02:54:39.000Z', + status: '9vvNxoo5EFbbnfdXQu', + emoji: '😢', + is_seen: false, + }), + ImmutableMap({ + id: '10743', + type: 'favourite', + account: '9v5c6xSEgAi3Zu1Lv6', + created_at: '2020-06-10T02:51:05.000Z', + status: '9vvNxoo5EFbbnfdXQu', + emoji: undefined, + is_seen: true, + }), + ImmutableMap({ + id: '10741', + type: 'favourite', + account: '9v5cKMOPGqPcgfcWp6', + created_at: '2020-06-10T02:05:06.000Z', + status: '9vvNxoo5EFbbnfdXQu', + emoji: undefined, + is_seen: true, + }), + ]), + hasMore: false, + top: false, + unread: 1, + isLoading: false, + queuedNotifications: ImmutableList(), + totalQueuedNotificationsCount: 0, + lastRead: -1, + }); + const action = { + type: actions.NOTIFICATIONS_FILTER_SET, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + items: ImmutableList(), + hasMore: true, + top: false, + unread: 1, + isLoading: false, + queuedNotifications: ImmutableList(), + totalQueuedNotificationsCount: 0, + lastRead: -1, + })); + }); + + it('should handle NOTIFICATIONS_SCROLL_TOP by changing unread to 0 when top = true', () => { + const state = ImmutableMap({ + unread: 1, + }); + const action = { + type: actions.NOTIFICATIONS_SCROLL_TOP, + top: true, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + unread: 0, + top: true, + })); + }); + + it('should handle NOTIFICATIONS_SCROLL_TOP by not changing unread val when top = false', () => { + const state = ImmutableMap({ + unread: 3, + }); + const action = { + type: actions.NOTIFICATIONS_SCROLL_TOP, + top: false, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + unread: 3, + top: false, + })); + }); + + it('should handle NOTIFICATIONS_UPDATE, when top = false, increment unread', () => { + const state = ImmutableMap({ + items: ImmutableList(), + top: false, + unread: 1, + }); + //const notification = notification; + const action = { + type: actions.NOTIFICATIONS_UPDATE, + notification: notification, + }; + expect(reducer(state, action)).toEqual(ImmutableMap({ + items: ImmutableList([ + ImmutableMap({ + id: '10744', + type: 'pleroma:emoji_reaction', + account: '9vMAje101ngtjlMj7w', + created_at: '2020-06-10T02:54:39.000Z', + status: '9vvNxoo5EFbbnfdXQu', + emoji: '😢', + is_seen: false, + }), + ]), + top: false, + unread: 2, + })); + }); + });