fix: #9973, ignore if assigning to same parent

isekai-main
Barış Soner Uşaklı 3 years ago
parent fb0588576d
commit 66e7cdac7a

@ -71,6 +71,9 @@ module.exports = function (Categories) {
}
const categoryData = await Categories.getCategoryFields(cid, ['parentCid', 'order']);
const oldParent = categoryData.parentCid;
if (oldParent === newParent) {
return;
}
await Promise.all([
db.sortedSetRemove(`cid:${oldParent}:children`, cid),
db.sortedSetAdd(`cid:${newParent}:children`, categoryData.order, cid),

@ -432,6 +432,26 @@ describe('Categories', () => {
});
});
it('should not remove category from parent if parent is set again to same category', async () => {
const parentCat = await Categories.create({ name: 'parent', description: 'poor parent' });
const updateData = {};
updateData[cid] = {
parentCid: parentCat.cid,
};
await Categories.update(updateData);
let data = await Categories.getCategoryData(cid);
assert.equal(data.parentCid, updateData[cid].parentCid);
let childrenCids = await db.getSortedSetRange(`cid:${parentCat.cid}:children`, 0, -1);
assert(childrenCids.includes(String(cid)));
// update again to same parent
await Categories.update(updateData);
data = await Categories.getCategoryData(cid);
assert.equal(data.parentCid, updateData[cid].parentCid);
childrenCids = await db.getSortedSetRange(`cid:${parentCat.cid}:children`, 0, -1);
assert(childrenCids.includes(String(cid)));
});
it('should purge category', (done) => {
Categories.create({
name: 'purge me',

Loading…
Cancel
Save