mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-08-08 23:15:28 +02:00
move methods
This commit is contained in:
parent
4299123855
commit
022deaf74b
3 changed files with 38 additions and 9 deletions
|
@ -17,7 +17,7 @@ class PagesOrder {
|
||||||
const order = await Model.get(parentId);
|
const order = await Model.get(parentId);
|
||||||
|
|
||||||
if (!order._id) {
|
if (!order._id) {
|
||||||
throw new Error('Page with given id does not exist');
|
throw new Error('Page with given id does not contain order');
|
||||||
}
|
}
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
|
@ -85,14 +85,10 @@ class PagesOrder {
|
||||||
* @param {string} putAbovePageId - page's id above which we put the target page
|
* @param {string} putAbovePageId - page's id above which we put the target page
|
||||||
*/
|
*/
|
||||||
static async update(currentPageId, parentPageId, putAbovePageId) {
|
static async update(currentPageId, parentPageId, putAbovePageId) {
|
||||||
const children = await Model.get(parentPageId);
|
const pageOrder = await Model.get(parentPageId);
|
||||||
const found1 = children.order.indexOf(putAbovePageId);
|
|
||||||
const found2 = children.order.indexOf(currentPageId);
|
|
||||||
const margin = found1 < found2 ? 1 : 0;
|
|
||||||
|
|
||||||
children.order.splice(found1, 0, currentPageId);
|
pageOrder.shift(currentPageId, putAbovePageId);
|
||||||
children.order.splice(found2 + margin, 1);
|
await pageOrder.save();
|
||||||
children.save();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,11 @@ class PageOrder {
|
||||||
* @param {string} pageId - page's id
|
* @param {string} pageId - page's id
|
||||||
*/
|
*/
|
||||||
push(pageId) {
|
push(pageId) {
|
||||||
this._order.push(pageId);
|
if (typeof pageId === 'string') {
|
||||||
|
this._order.push(pageId);
|
||||||
|
} else {
|
||||||
|
throw new Error('given id is not string');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,6 +97,21 @@ class PageOrder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} currentPageId - page's id that changes the order
|
||||||
|
* @param {string} putAbovePageId - page's id above which we put the target page
|
||||||
|
*
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
shift(currentPageId, putAbovePageId) {
|
||||||
|
const found1 = this.order.indexOf(putAbovePageId);
|
||||||
|
const found2 = this.order.indexOf(currentPageId);
|
||||||
|
const margin = found1 < found2 ? 1 : 0;
|
||||||
|
|
||||||
|
this.order.splice(found1, 0, currentPageId);
|
||||||
|
this.order.splice(found2 + margin, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns ordered list
|
* Returns ordered list
|
||||||
*
|
*
|
||||||
|
|
|
@ -96,11 +96,21 @@ describe('PageOrder model', () => {
|
||||||
const pageOrder = new PageOrder(testData);
|
const pageOrder = new PageOrder(testData);
|
||||||
await pageOrder.save();
|
await pageOrder.save();
|
||||||
pageOrder.push('3');
|
pageOrder.push('3');
|
||||||
|
expect(pageOrder.data.order).to.be.an('array').that.is.not.empty;
|
||||||
|
pageOrder.data.order.forEach((el) => {
|
||||||
|
expect(el).to.be.an('string')
|
||||||
|
});
|
||||||
|
|
||||||
expect(pageOrder.data.order).to.deep.equals(['1', '2', '3']);
|
expect(pageOrder.data.order).to.deep.equals(['1', '2', '3']);
|
||||||
|
|
||||||
pageOrder.remove('2');
|
pageOrder.remove('2');
|
||||||
expect(pageOrder.data.order).to.deep.equals(['1', '3']);
|
expect(pageOrder.data.order).to.deep.equals(['1', '3']);
|
||||||
|
|
||||||
|
expect(() => {
|
||||||
|
pageOrder.push(3);
|
||||||
|
}).to.throw('given id is not string');
|
||||||
|
|
||||||
|
|
||||||
await pageOrder.destroy();
|
await pageOrder.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -116,6 +126,10 @@ describe('PageOrder model', () => {
|
||||||
expect(insertedPageOrder).to.instanceOf(PageOrder);
|
expect(insertedPageOrder).to.instanceOf(PageOrder);
|
||||||
expect(insertedPageOrder.data._id).to.be.equal(insertedData.data._id);
|
expect(insertedPageOrder.data._id).to.be.equal(insertedData.data._id);
|
||||||
|
|
||||||
|
const emptyInstance = await PageOrder.get(null);
|
||||||
|
expect(emptyInstance.data.page).to.be.equal('0');
|
||||||
|
expect(emptyInstance.data.order).to.be.an('array').that.is.empty;
|
||||||
|
|
||||||
await pageOrder.destroy();
|
await pageOrder.destroy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue