mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2026-04-06 01:25:31 +00:00
fix(backend): fix structure of unit test reports (#9199)
This commit is contained in:
parent
75e36abbc6
commit
56eecf066b
@ -14,7 +14,7 @@ import createServer from '@src/server'
|
|||||||
const instance = getNeode()
|
const instance = getNeode()
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
|
|
||||||
describe('file a report on a resource', () => {
|
describe('reports', () => {
|
||||||
let authenticatedUser, currentUser, mutate, query, moderator, abusiveUser, otherReportingUser
|
let authenticatedUser, currentUser, mutate, query, moderator, abusiveUser, otherReportingUser
|
||||||
const categoryIds = ['cat9']
|
const categoryIds = ['cat9']
|
||||||
const variables = {
|
const variables = {
|
||||||
@ -659,251 +659,249 @@ describe('file a report on a resource', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('authenticated', () => {
|
describe('authenticated', () => {
|
||||||
it('role "user" gets no reports', async () => {
|
describe('as user', () => {
|
||||||
authenticatedUser = await currentUser.toJson()
|
beforeEach(async () => {
|
||||||
await expect(query({ query: reports })).resolves.toMatchObject({
|
authenticatedUser = await currentUser.toJson()
|
||||||
data: { reports: null },
|
})
|
||||||
errors: [{ message: 'Not Authorized!' }],
|
|
||||||
|
it('returns no reports', async () => {
|
||||||
|
await expect(query({ query: reports })).resolves.toMatchObject({
|
||||||
|
data: { reports: null },
|
||||||
|
errors: [{ message: 'Not Authorized!' }],
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('role "moderator" gets reports', async () => {
|
describe('as moderator', () => {
|
||||||
const expected = {
|
beforeEach(async () => {
|
||||||
reports: expect.arrayContaining([
|
authenticatedUser = await moderator.toJson()
|
||||||
expect.objectContaining({
|
})
|
||||||
id: expect.any(String),
|
|
||||||
createdAt: expect.any(String),
|
it('gets reports', async () => {
|
||||||
updatedAt: expect.any(String),
|
const expected = {
|
||||||
closed: false,
|
reports: expect.arrayContaining([
|
||||||
resource: {
|
expect.objectContaining({
|
||||||
__typename: 'User',
|
id: expect.any(String),
|
||||||
id: 'abusive-user-1',
|
createdAt: expect.any(String),
|
||||||
},
|
updatedAt: expect.any(String),
|
||||||
filed: expect.arrayContaining([
|
closed: false,
|
||||||
expect.objectContaining({
|
resource: {
|
||||||
submitter: expect.objectContaining({
|
__typename: 'User',
|
||||||
id: 'current-user-id',
|
id: 'abusive-user-1',
|
||||||
|
},
|
||||||
|
filed: expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
submitter: expect.objectContaining({
|
||||||
|
id: 'current-user-id',
|
||||||
|
}),
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
reasonCategory: 'doxing',
|
||||||
|
reasonDescription: 'This user is harassing me with bigoted remarks',
|
||||||
}),
|
}),
|
||||||
createdAt: expect.any(String),
|
]),
|
||||||
reasonCategory: 'doxing',
|
}),
|
||||||
reasonDescription: 'This user is harassing me with bigoted remarks',
|
expect.objectContaining({
|
||||||
}),
|
id: expect.any(String),
|
||||||
]),
|
createdAt: expect.any(String),
|
||||||
}),
|
updatedAt: expect.any(String),
|
||||||
expect.objectContaining({
|
closed: false,
|
||||||
id: expect.any(String),
|
resource: {
|
||||||
createdAt: expect.any(String),
|
__typename: 'Post',
|
||||||
updatedAt: expect.any(String),
|
id: 'abusive-post-1',
|
||||||
closed: false,
|
},
|
||||||
resource: {
|
filed: expect.arrayContaining([
|
||||||
__typename: 'Post',
|
expect.objectContaining({
|
||||||
id: 'abusive-post-1',
|
submitter: expect.objectContaining({
|
||||||
},
|
id: 'current-user-id',
|
||||||
filed: expect.arrayContaining([
|
}),
|
||||||
expect.objectContaining({
|
createdAt: expect.any(String),
|
||||||
submitter: expect.objectContaining({
|
reasonCategory: 'other',
|
||||||
id: 'current-user-id',
|
reasonDescription: 'This post is bigoted',
|
||||||
}),
|
}),
|
||||||
createdAt: expect.any(String),
|
]),
|
||||||
reasonCategory: 'other',
|
}),
|
||||||
reasonDescription: 'This post is bigoted',
|
expect.objectContaining({
|
||||||
}),
|
id: expect.any(String),
|
||||||
]),
|
createdAt: expect.any(String),
|
||||||
}),
|
updatedAt: expect.any(String),
|
||||||
expect.objectContaining({
|
closed: false,
|
||||||
id: expect.any(String),
|
resource: {
|
||||||
createdAt: expect.any(String),
|
__typename: 'Comment',
|
||||||
updatedAt: expect.any(String),
|
id: 'abusive-comment-1',
|
||||||
closed: false,
|
},
|
||||||
resource: {
|
filed: expect.arrayContaining([
|
||||||
__typename: 'Comment',
|
expect.objectContaining({
|
||||||
id: 'abusive-comment-1',
|
submitter: expect.objectContaining({
|
||||||
},
|
id: 'current-user-id',
|
||||||
filed: expect.arrayContaining([
|
}),
|
||||||
expect.objectContaining({
|
createdAt: expect.any(String),
|
||||||
submitter: expect.objectContaining({
|
reasonCategory: 'discrimination_etc',
|
||||||
id: 'current-user-id',
|
reasonDescription: 'This comment is bigoted',
|
||||||
}),
|
}),
|
||||||
createdAt: expect.any(String),
|
]),
|
||||||
reasonCategory: 'discrimination_etc',
|
}),
|
||||||
reasonDescription: 'This comment is bigoted',
|
]),
|
||||||
}),
|
}
|
||||||
]),
|
const { data } = await query({ query: reports })
|
||||||
}),
|
expect(data).toEqual(expected)
|
||||||
]),
|
|
||||||
}
|
|
||||||
authenticatedUser = await moderator.toJson()
|
|
||||||
const { data } = await query({ query: reports })
|
|
||||||
expect(data).toEqual(expected)
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('orderBy', () => {
|
|
||||||
it('createdAt_asc returns reports in ascending order', async () => {
|
|
||||||
authenticatedUser = await moderator.toJson()
|
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { orderBy: 'createdAt_asc' },
|
|
||||||
})
|
|
||||||
const sorted = [...data.reports].sort((a, b) => (a.createdAt > b.createdAt ? 1 : -1))
|
|
||||||
expect(data.reports).toEqual(sorted)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('createdAt_desc returns reports in descending order', async () => {
|
describe('orderBy', () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
it('createdAt_asc returns reports in ascending order', async () => {
|
||||||
const { data } = await query({
|
const { data } = await query({
|
||||||
query: reports,
|
query: reports,
|
||||||
variables: { orderBy: 'createdAt_desc' },
|
variables: { orderBy: 'createdAt_asc' },
|
||||||
|
})
|
||||||
|
const sorted = [...data.reports].sort((a, b) => (a.createdAt > b.createdAt ? 1 : -1))
|
||||||
|
expect(data.reports).toEqual(sorted)
|
||||||
})
|
})
|
||||||
const sorted = [...data.reports].sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1))
|
|
||||||
expect(data.reports).toEqual(sorted)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('reviewed filter', () => {
|
it('createdAt_desc returns reports in descending order', async () => {
|
||||||
it('reviewed: false returns only unreviewed reports', async () => {
|
const { data } = await query({
|
||||||
authenticatedUser = await moderator.toJson()
|
query: reports,
|
||||||
const { data } = await query({
|
variables: { orderBy: 'createdAt_desc' },
|
||||||
query: reports,
|
})
|
||||||
variables: { reviewed: false },
|
const sorted = [...data.reports].sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1))
|
||||||
})
|
expect(data.reports).toEqual(sorted)
|
||||||
expect(data.reports).toHaveLength(3)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('reviewed: true returns only reviewed reports', async () => {
|
|
||||||
authenticatedUser = await moderator.toJson()
|
|
||||||
// review one report
|
|
||||||
await mutate({
|
|
||||||
mutation: review,
|
|
||||||
variables: { resourceId: 'abusive-post-1', disable: false, closed: false },
|
|
||||||
})
|
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { reviewed: true },
|
|
||||||
})
|
|
||||||
expect(data.reports).toHaveLength(1)
|
|
||||||
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('closed filter', () => {
|
|
||||||
it('closed: false returns only open reports', async () => {
|
|
||||||
authenticatedUser = await moderator.toJson()
|
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { closed: false },
|
|
||||||
})
|
|
||||||
expect(data.reports).toHaveLength(3)
|
|
||||||
data.reports.forEach((report) => {
|
|
||||||
expect(report.closed).toBe(false)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('closed: true returns only closed reports', async () => {
|
describe('reviewed filter', () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
it('reviewed: false returns only unreviewed reports', async () => {
|
||||||
// close one report via review
|
const { data } = await query({
|
||||||
await mutate({
|
query: reports,
|
||||||
mutation: review,
|
variables: { reviewed: false },
|
||||||
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
})
|
||||||
|
expect(data.reports).toHaveLength(3)
|
||||||
})
|
})
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { closed: true },
|
|
||||||
})
|
|
||||||
expect(data.reports).toHaveLength(1)
|
|
||||||
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
|
||||||
expect(data.reports[0].closed).toBe(true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('combined reviewed and closed filter', () => {
|
it('reviewed: true returns only reviewed reports', async () => {
|
||||||
it('returns only reports matching both filters', async () => {
|
// review one report
|
||||||
authenticatedUser = await moderator.toJson()
|
await mutate({
|
||||||
// review and close one report
|
mutation: review,
|
||||||
await mutate({
|
variables: { resourceId: 'abusive-post-1', disable: false, closed: false },
|
||||||
mutation: review,
|
})
|
||||||
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
const { data } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { reviewed: true },
|
||||||
|
})
|
||||||
|
expect(data.reports).toHaveLength(1)
|
||||||
|
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
||||||
})
|
})
|
||||||
// review but keep open another report
|
|
||||||
await mutate({
|
|
||||||
mutation: review,
|
|
||||||
variables: { resourceId: 'abusive-user-1', disable: false, closed: false },
|
|
||||||
})
|
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { reviewed: true, closed: true },
|
|
||||||
})
|
|
||||||
expect(data.reports).toHaveLength(1)
|
|
||||||
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
|
||||||
expect(data.reports[0].closed).toBe(true)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('reviewed: true, closed: false returns reviewed but open reports', async () => {
|
describe('closed filter', () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
it('closed: false returns only open reports', async () => {
|
||||||
// review and close one report
|
const { data } = await query({
|
||||||
await mutate({
|
query: reports,
|
||||||
mutation: review,
|
variables: { closed: false },
|
||||||
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
})
|
||||||
|
expect(data.reports).toHaveLength(3)
|
||||||
|
data.reports.forEach((report) => {
|
||||||
|
expect(report.closed).toBe(false)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
// review but keep open another report
|
|
||||||
await mutate({
|
|
||||||
mutation: review,
|
|
||||||
variables: { resourceId: 'abusive-user-1', disable: false, closed: false },
|
|
||||||
})
|
|
||||||
const { data } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { reviewed: true, closed: false },
|
|
||||||
})
|
|
||||||
expect(data.reports).toHaveLength(1)
|
|
||||||
expect(data.reports[0].resource.id).toBe('abusive-user-1')
|
|
||||||
expect(data.reports[0].closed).toBe(false)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('pagination', () => {
|
it('closed: true returns only closed reports', async () => {
|
||||||
it('first: 2 returns only 2 reports', async () => {
|
// close one report via review
|
||||||
authenticatedUser = await moderator.toJson()
|
await mutate({
|
||||||
const { data } = await query({
|
mutation: review,
|
||||||
query: reports,
|
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
||||||
variables: { first: 2 },
|
})
|
||||||
|
const { data } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { closed: true },
|
||||||
|
})
|
||||||
|
expect(data.reports).toHaveLength(1)
|
||||||
|
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
||||||
|
expect(data.reports[0].closed).toBe(true)
|
||||||
})
|
})
|
||||||
expect(data.reports).toHaveLength(2)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('first: 1 returns only 1 report', async () => {
|
describe('combined reviewed and closed filter', () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
it('returns only reports matching both filters', async () => {
|
||||||
const { data } = await query({
|
// review and close one report
|
||||||
query: reports,
|
await mutate({
|
||||||
variables: { first: 1 },
|
mutation: review,
|
||||||
|
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
||||||
|
})
|
||||||
|
// review but keep open another report
|
||||||
|
await mutate({
|
||||||
|
mutation: review,
|
||||||
|
variables: { resourceId: 'abusive-user-1', disable: false, closed: false },
|
||||||
|
})
|
||||||
|
const { data } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { reviewed: true, closed: true },
|
||||||
|
})
|
||||||
|
expect(data.reports).toHaveLength(1)
|
||||||
|
expect(data.reports[0].resource.id).toBe('abusive-post-1')
|
||||||
|
expect(data.reports[0].closed).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('reviewed: true, closed: false returns reviewed but open reports', async () => {
|
||||||
|
// review and close one report
|
||||||
|
await mutate({
|
||||||
|
mutation: review,
|
||||||
|
variables: { resourceId: 'abusive-post-1', disable: false, closed: true },
|
||||||
|
})
|
||||||
|
// review but keep open another report
|
||||||
|
await mutate({
|
||||||
|
mutation: review,
|
||||||
|
variables: { resourceId: 'abusive-user-1', disable: false, closed: false },
|
||||||
|
})
|
||||||
|
const { data } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { reviewed: true, closed: false },
|
||||||
|
})
|
||||||
|
expect(data.reports).toHaveLength(1)
|
||||||
|
expect(data.reports[0].resource.id).toBe('abusive-user-1')
|
||||||
|
expect(data.reports[0].closed).toBe(false)
|
||||||
})
|
})
|
||||||
expect(data.reports).toHaveLength(1)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('offset: 1 skips the first report', async () => {
|
describe('pagination', () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
it('first: 2 returns only 2 reports', async () => {
|
||||||
const { data: allData } = await query({
|
const { data } = await query({
|
||||||
query: reports,
|
query: reports,
|
||||||
variables: { orderBy: 'createdAt_asc' },
|
variables: { first: 2 },
|
||||||
|
})
|
||||||
|
expect(data.reports).toHaveLength(2)
|
||||||
})
|
})
|
||||||
const { data: offsetData } = await query({
|
|
||||||
query: reports,
|
|
||||||
variables: { orderBy: 'createdAt_asc', offset: 1 },
|
|
||||||
})
|
|
||||||
expect(offsetData.reports).toHaveLength(allData.reports.length - 1)
|
|
||||||
expect(offsetData.reports[0].id).toBe(allData.reports[1].id)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('first and offset combined for paging', async () => {
|
it('first: 1 returns only 1 report', async () => {
|
||||||
authenticatedUser = await moderator.toJson()
|
const { data } = await query({
|
||||||
const { data: allData } = await query({
|
query: reports,
|
||||||
query: reports,
|
variables: { first: 1 },
|
||||||
variables: { orderBy: 'createdAt_asc' },
|
})
|
||||||
|
expect(data.reports).toHaveLength(1)
|
||||||
})
|
})
|
||||||
const { data: pageData } = await query({
|
|
||||||
query: reports,
|
it('offset: 1 skips the first report', async () => {
|
||||||
variables: { orderBy: 'createdAt_asc', first: 1, offset: 1 },
|
const { data: allData } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { orderBy: 'createdAt_asc' },
|
||||||
|
})
|
||||||
|
const { data: offsetData } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { orderBy: 'createdAt_asc', offset: 1 },
|
||||||
|
})
|
||||||
|
expect(offsetData.reports).toHaveLength(allData.reports.length - 1)
|
||||||
|
expect(offsetData.reports[0].id).toBe(allData.reports[1].id)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('first and offset combined for paging', async () => {
|
||||||
|
const { data: allData } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { orderBy: 'createdAt_asc' },
|
||||||
|
})
|
||||||
|
const { data: pageData } = await query({
|
||||||
|
query: reports,
|
||||||
|
variables: { orderBy: 'createdAt_asc', first: 1, offset: 1 },
|
||||||
|
})
|
||||||
|
expect(pageData.reports).toHaveLength(1)
|
||||||
|
expect(pageData.reports[0].id).toBe(allData.reports[1].id)
|
||||||
})
|
})
|
||||||
expect(pageData.reports).toHaveLength(1)
|
|
||||||
expect(pageData.reports[0].id).toBe(allData.reports[1].id)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user