feat: totally hide strict filters (#948)

This commit is contained in:
Ayo Ayco 2023-01-23 20:33:21 +01:00 committed by GitHub
parent 1a7ae6f0ef
commit a08f56676d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 82 additions and 33 deletions

View file

@ -1,7 +1,21 @@
import type { mastodon } from 'masto'
import { describe, expect, it } from 'vitest'
function status(id: string): mastodon.v1.Status {
function status(id: string, filtered?: mastodon.v1.FilterContext): mastodon.v1.Status {
if (filtered) {
return {
id,
filtered: [
{
filter: {
filterAction: 'hide',
context: [filtered],
},
} as mastodon.v1.FilterResult,
],
} as mastodon.v1.Status
}
return { id } as mastodon.v1.Status
}
function reply(id: string, s: mastodon.v1.Status) {
@ -26,6 +40,11 @@ const r_b1 = reblog('r_b1', p_b1)
const r_a2 = reblog('r_a2', p_a2)
const r_b2 = reblog('r_b2', p_b2)
const f1 = status('f1', 'public')
const r_f1 = reply('r_f1', f1)
const rb_f1 = reblog('rb_f1', f1)
const n_f2 = status('f2', 'notifications')
describe('timeline reordering', () => {
it('reorder basic', () => {
expect(reorderedTimeline([r_a2, r_a1])).toEqual([r_a1, r_a2])
@ -48,4 +67,21 @@ describe('timeline reordering', () => {
expect(reorderedTimeline([p_a3, r_a1, r_a2, r_b2, p_b3, r_b1])).toEqual([r_a1, r_a2, p_a3, r_b1, r_b2, p_b3])
})
it('reorder with filtered item', () => {
// should not show filtered status with 'hide' filterAction
expect(reorderedTimeline([p_a3, f1, r_a1, r_a2, r_b2, p_b3, r_b1])).toEqual([r_a1, r_a2, p_a3, r_b1, r_b2, p_b3])
// should not filter status with 'hide' filterAction but does not match context
expect(reorderedTimeline([p_a3, n_f2, r_a1, r_a2, r_b2, p_b3, r_b1], 'public')).toEqual([r_a1, r_a2, p_a3, n_f2, r_b1, r_b2, p_b3])
// should filter status with 'hide' filterAction and matches context
expect(reorderedTimeline([p_a3, n_f2, r_a1, r_a2, r_b2, p_b3, r_b1], 'notifications')).toEqual([r_a1, r_a2, p_a3, r_b1, r_b2, p_b3])
// should show reply to a filtered status
expect(reorderedTimeline([p_a3, f1, r_a1, r_f1, r_a2, r_b2, p_b3, r_b1])).toEqual([r_a1, r_a2, p_a3, r_f1, r_b1, r_b2, p_b3])
// should not show reblogged status that is filtered with 'hide' filterAction
expect(reorderedTimeline([p_a3, f1, r_a1, rb_f1, r_a2, r_b2, p_b3, r_b1])).toEqual([r_a1, r_a2, p_a3, r_b1, r_b2, p_b3])
})
})