mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Merge remote-tracking branch 'origin/master' into another-fix-of-activity-pub-implementation
This commit is contained in:
commit
c9dfd0d294
@ -1,44 +1,21 @@
|
|||||||
|
const setCreatedAt = (resolve, root, args, context, info) => {
|
||||||
|
args.createdAt = (new Date()).toISOString()
|
||||||
|
return resolve(root, args, context, info)
|
||||||
|
}
|
||||||
|
const setUpdatedAt = (resolve, root, args, context, info) => {
|
||||||
|
args.updatedAt = (new Date()).toISOString()
|
||||||
|
return resolve(root, args, context, info)
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
Mutation: {
|
Mutation: {
|
||||||
CreateUser: async (resolve, root, args, context, info) => {
|
CreateUser: setCreatedAt,
|
||||||
args.createdAt = (new Date()).toISOString()
|
CreatePost: setCreatedAt,
|
||||||
const result = await resolve(root, args, context, info)
|
CreateComment: setCreatedAt,
|
||||||
return result
|
CreateOrganization: setCreatedAt,
|
||||||
},
|
UpdateUser: setUpdatedAt,
|
||||||
CreatePost: async (resolve, root, args, context, info) => {
|
UpdatePost: setUpdatedAt,
|
||||||
args.createdAt = (new Date()).toISOString()
|
UpdateComment: setUpdatedAt,
|
||||||
const result = await resolve(root, args, context, info)
|
UpdateOrganization: setUpdatedAt
|
||||||
return result
|
|
||||||
},
|
|
||||||
CreateComment: async (resolve, root, args, context, info) => {
|
|
||||||
args.createdAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
},
|
|
||||||
CreateOrganization: async (resolve, root, args, context, info) => {
|
|
||||||
args.createdAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
},
|
|
||||||
UpdateUser: async (resolve, root, args, context, info) => {
|
|
||||||
args.updatedAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
},
|
|
||||||
UpdatePost: async (resolve, root, args, context, info) => {
|
|
||||||
args.updatedAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
},
|
|
||||||
UpdateComment: async (resolve, root, args, context, info) => {
|
|
||||||
args.updatedAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
},
|
|
||||||
UpdateOrganization: async (resolve, root, args, context, info) => {
|
|
||||||
args.updatedAt = (new Date()).toISOString()
|
|
||||||
const result = await resolve(root, args, context, info)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,6 @@ const includeFieldsRecursively = (includedFields) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
Query: includeFieldsRecursively(['id', 'disabled', 'deleted']),
|
Query: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted']),
|
||||||
Mutation: includeFieldsRecursively(['id', 'disabled', 'deleted'])
|
Mutation: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted'])
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import xssMiddleware from './xssMiddleware'
|
|||||||
import permissionsMiddleware from './permissionsMiddleware'
|
import permissionsMiddleware from './permissionsMiddleware'
|
||||||
import userMiddleware from './userMiddleware'
|
import userMiddleware from './userMiddleware'
|
||||||
import includedFieldsMiddleware from './includedFieldsMiddleware'
|
import includedFieldsMiddleware from './includedFieldsMiddleware'
|
||||||
|
import orderByMiddleware from './orderByMiddleware'
|
||||||
|
|
||||||
export default schema => {
|
export default schema => {
|
||||||
let middleware = [
|
let middleware = [
|
||||||
@ -20,7 +21,8 @@ export default schema => {
|
|||||||
fixImageUrlsMiddleware,
|
fixImageUrlsMiddleware,
|
||||||
softDeleteMiddleware,
|
softDeleteMiddleware,
|
||||||
userMiddleware,
|
userMiddleware,
|
||||||
includedFieldsMiddleware
|
includedFieldsMiddleware,
|
||||||
|
orderByMiddleware
|
||||||
]
|
]
|
||||||
|
|
||||||
// add permisions middleware at the first position (unless we're seeding)
|
// add permisions middleware at the first position (unless we're seeding)
|
||||||
|
|||||||
19
backend/src/middleware/orderByMiddleware.js
Normal file
19
backend/src/middleware/orderByMiddleware.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
|
|
||||||
|
const defaultOrderBy = (resolve, root, args, context, resolveInfo) => {
|
||||||
|
const copy = cloneDeep(resolveInfo)
|
||||||
|
const newestFirst = {
|
||||||
|
kind: 'Argument',
|
||||||
|
name: { kind: 'Name', value: 'orderBy' },
|
||||||
|
value: { kind: 'EnumValue', value: 'createdAt_desc' }
|
||||||
|
}
|
||||||
|
const [fieldNode] = copy.fieldNodes
|
||||||
|
if (fieldNode) fieldNode.arguments.push(newestFirst)
|
||||||
|
return resolve(root, args, context, copy)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
Query: {
|
||||||
|
Post: defaultOrderBy
|
||||||
|
}
|
||||||
|
}
|
||||||
62
backend/src/middleware/orderByMiddleware.spec.js
Normal file
62
backend/src/middleware/orderByMiddleware.spec.js
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import Factory from '../seed/factories'
|
||||||
|
import { host } from '../jest/helpers'
|
||||||
|
import { GraphQLClient } from 'graphql-request'
|
||||||
|
|
||||||
|
let client
|
||||||
|
let headers
|
||||||
|
let query
|
||||||
|
const factory = Factory()
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
const userParams = { name: 'Author', email: 'author@example.org', password: '1234' }
|
||||||
|
await factory.create('User', userParams)
|
||||||
|
await factory.authenticateAs(userParams)
|
||||||
|
await factory.create('Post', { title: 'first' })
|
||||||
|
await factory.create('Post', { title: 'second' })
|
||||||
|
await factory.create('Post', { title: 'third' })
|
||||||
|
await factory.create('Post', { title: 'last' })
|
||||||
|
headers = {}
|
||||||
|
client = new GraphQLClient(host, { headers })
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await factory.cleanDatabase()
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('Query', () => {
|
||||||
|
describe('Post', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
query = '{ Post { title } }'
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('orderBy', () => {
|
||||||
|
it('createdAt descending is default', async () => {
|
||||||
|
const posts = [
|
||||||
|
{ title: 'last' },
|
||||||
|
{ title: 'third' },
|
||||||
|
{ title: 'second' },
|
||||||
|
{ title: 'first' }
|
||||||
|
]
|
||||||
|
const expected = { Post: posts }
|
||||||
|
await expect(client.request(query)).resolves.toEqual(expected)
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('(orderBy: createdAt_asc)', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
query = '{ Post(orderBy: createdAt_asc) { title } }'
|
||||||
|
})
|
||||||
|
|
||||||
|
it('orders by createdAt ascending', async () => {
|
||||||
|
const posts = [
|
||||||
|
{ title: 'first' },
|
||||||
|
{ title: 'second' },
|
||||||
|
{ title: 'third' },
|
||||||
|
{ title: 'last' }
|
||||||
|
]
|
||||||
|
const expected = { Post: posts }
|
||||||
|
await expect(client.request(query)).resolves.toEqual(expected)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
Loading…
x
Reference in New Issue
Block a user