mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	fix: category ordering add test
This commit is contained in:
		| @@ -202,7 +202,7 @@ define('admin/manage/categories', [ | ||||
| 			// this makes sure order is correct when drag & drop is used on pages > 1 | ||||
| 			const baseIndex = (ajaxify.data.pagination.currentPage - 1) * ajaxify.data.categoriesPerPage; | ||||
| 			modified[cid] = { | ||||
| 				order: baseIndex + e.newIndex, | ||||
| 				order: baseIndex + e.newIndex + 1, | ||||
| 			}; | ||||
|  | ||||
| 			if (isCategoryUpdate) { | ||||
|   | ||||
| @@ -108,7 +108,7 @@ module.exports = function (Categories) { | ||||
| 		if (currentIndex === -1) { | ||||
| 			throw new Error('[[error:no-category]]'); | ||||
| 		} | ||||
| 		// moves cid to index order-1 in the array | ||||
| 		// moves cid to index order - 1 in the array | ||||
| 		if (childrenCids.length > 1) { | ||||
| 			childrenCids.splice(Math.max(0, order - 1), 0, childrenCids.splice(currentIndex, 1)[0]); | ||||
| 		} | ||||
|   | ||||
| @@ -421,6 +421,22 @@ describe('Categories', () => { | ||||
| 			assert.equal(data.icon, updateData[cid].icon); | ||||
| 		}); | ||||
|  | ||||
| 		it('should properly order categories', async () => { | ||||
| 			const p1 = await Categories.create({ name: 'p1', description: 'd', parentCid: 0, order: 1 }); | ||||
| 			const c1 = await Categories.create({ name: 'c1', description: 'd1', parentCid: p1.cid, order: 1 }); | ||||
| 			const c2 = await Categories.create({ name: 'c2', description: 'd2', parentCid: p1.cid, order: 2 }); | ||||
| 			const c3 = await Categories.create({ name: 'c3', description: 'd3', parentCid: p1.cid, order: 3 }); | ||||
| 			// move c1 to second place | ||||
| 			await apiCategories.update({ uid: adminUid }, { [c1.cid]: { order: 2 } }); | ||||
| 			let cids = await db.getSortedSetRange(`cid:${p1.cid}:children`, 0, -1); | ||||
| 			assert.deepStrictEqual(cids.map(Number), [c2.cid, c1.cid, c3.cid]); | ||||
|  | ||||
| 			// move c3 to front | ||||
| 			await apiCategories.update({ uid: adminUid }, { [c3.cid]: { order: 1 } }); | ||||
| 			cids = await db.getSortedSetRange(`cid:${p1.cid}:children`, 0, -1); | ||||
| 			assert.deepStrictEqual(cids.map(Number), [c3.cid, c2.cid, c1.cid]); | ||||
| 		}); | ||||
|  | ||||
| 		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 = {}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user