merge-requests/106/head
crockwave 4 years ago
parent c216833222
commit d415a432d2

@ -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
}
}
}

@ -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": "<a href=\"https://alexgleason.me\" rel=\"ugc\">https://alexgleason.me</a>"
},
{
"name": "Pleroma+Soapbox",
"value": "<a href=\"https://soapbox.pub\" rel=\"ugc\">https://soapbox.pub</a>"
},
{
"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. <a class=\"hashtag\" data-tag=\"vegan\" href=\"https://gleasonator.com/tag/vegan\">#vegan</a> <a class=\"hashtag\" data-tag=\"freeculture\" href=\"https://gleasonator.com/tag/freeculture\">#freeculture</a> <a class=\"hashtag\" data-tag=\"atheist\" href=\"https://gleasonator.com/tag/atheist\">#atheist</a> <a class=\"hashtag\" data-tag=\"antiporn\" href=\"https://gleasonator.com/tag/antiporn\">#antiporn</a> <a class=\"hashtag\" data-tag=\"gendercritical\" href=\"https://gleasonator.com/tag/gendercritical\">#gendercritical</a>. 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%.<br/><br/>Pleroma FE doesn&#39;t seem to report coverage, but I suspect it&#39;s better than both of these combined.<br/><br/>I don&#39;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"
}

@ -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,
}));
});
});

Loading…
Cancel
Save