mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	fix: #9973, ignore if assigning to same parent
This commit is contained in:
		| @@ -71,6 +71,9 @@ module.exports = function (Categories) { | |||||||
| 		} | 		} | ||||||
| 		const categoryData = await Categories.getCategoryFields(cid, ['parentCid', 'order']); | 		const categoryData = await Categories.getCategoryFields(cid, ['parentCid', 'order']); | ||||||
| 		const oldParent = categoryData.parentCid; | 		const oldParent = categoryData.parentCid; | ||||||
|  | 		if (oldParent === newParent) { | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
| 		await Promise.all([ | 		await Promise.all([ | ||||||
| 			db.sortedSetRemove(`cid:${oldParent}:children`, cid), | 			db.sortedSetRemove(`cid:${oldParent}:children`, cid), | ||||||
| 			db.sortedSetAdd(`cid:${newParent}:children`, categoryData.order, 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) => { | 		it('should purge category', (done) => { | ||||||
| 			Categories.create({ | 			Categories.create({ | ||||||
| 				name: 'purge me', | 				name: 'purge me', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user