mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-21 15:35:00 +03:00
Fixed admin replies pagination to always sort old to new (#21679)
ref PLG-227 - added the correct order params for admin replies to ensure they are sorted oldest to newest. - hardcoded since we want to ensure it remains that way.
This commit is contained in:
parent
9493fbefcc
commit
49c0e60053
@ -87,6 +87,7 @@ module.exports = class CommentsController {
|
||||
*/
|
||||
async adminReplies(frame) {
|
||||
frame.options.isAdmin = true;
|
||||
frame.options.order = 'created_at asc'; // we always want to load replies from oldest to newest
|
||||
return this.service.getReplies(frame.options.id, _.omit(frame.options, 'id'));
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ const dbFns = {
|
||||
* @property {string} [parent_id]
|
||||
* @property {string} [html='This is a comment']
|
||||
* @property {string} [status='published']
|
||||
* @property {date} [created_at]
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} AddCommentReplyData
|
||||
@ -55,7 +56,8 @@ const dbFns = {
|
||||
member_id: reply.member_id,
|
||||
parent_id: parent.get('id'),
|
||||
html: reply.html || '<p>This is a reply</p>',
|
||||
status: reply.status || 'published'
|
||||
status: reply.status || 'published',
|
||||
created_at: reply.created_at || new Date()
|
||||
});
|
||||
createdReplies.push(createdReply);
|
||||
}
|
||||
@ -455,5 +457,64 @@ describe('Admin Comments API', function () {
|
||||
assert.equal(res2.body.comments.length, 1);
|
||||
assert.equal(res2.body.comments[0].html, 'Reply 4');
|
||||
});
|
||||
|
||||
it('ensure replies are always ordered from oldest to newest', async function () {
|
||||
const post = fixtureManager.get('posts', 1);
|
||||
const {parent} = await dbFns.addCommentWithReplies({
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
post_id: post.id,
|
||||
html: 'Comment 1',
|
||||
status: 'published',
|
||||
created_at: new Date('2021-01-01'),
|
||||
replies: [
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 1',
|
||||
status: 'published',
|
||||
created_at: new Date('2022-01-01')
|
||||
},
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 2',
|
||||
status: 'published',
|
||||
created_at: new Date('2022-01-02')
|
||||
},
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 3',
|
||||
status: 'hidden',
|
||||
created_at: new Date('2022-01-03')
|
||||
},
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 4',
|
||||
status: 'hidden',
|
||||
created_at: new Date('2022-01-04')
|
||||
},
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 5',
|
||||
status: 'published',
|
||||
created_at: new Date('2022-01-05')
|
||||
},
|
||||
{
|
||||
member_id: fixtureManager.get('members', 0).id,
|
||||
html: 'Reply 6',
|
||||
status: 'published',
|
||||
created_at: new Date('2022-01-06')
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const res = await adminApi.get('/comments/post/' + post.id + '/');
|
||||
const item = res.body.comments.find(cmt => parent.id === cmt.id);
|
||||
const lastReply = item.replies[item.replies.length - 1];
|
||||
const filter = encodeURIComponent(`id:>'${lastReply.id}'`);
|
||||
const res2 = await adminApi.get(`/comments/${parent.id}/replies?limit=10&filter=${filter}`);
|
||||
assert.equal(res2.body.comments.length, 3);
|
||||
assert.equal(res2.body.comments[0].html, 'Reply 4');
|
||||
assert.equal(res2.body.comments[1].html, 'Reply 5');
|
||||
assert.equal(res2.body.comments[2].html, 'Reply 6');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user