mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Hotfix: moving pinned items (#12935)
* increase checks for moving pinned items - fixes #10406 * allow to move official pinneditems * using common object instead of method import
This commit is contained in:
@@ -3,15 +3,15 @@ import {
|
||||
} from '../../../../helpers/api-integration/v3';
|
||||
|
||||
import getOfficialPinnedItems from '../../../../../website/common/script/libs/getOfficialPinnedItems';
|
||||
import content from '../../../../../website/common/script/content';
|
||||
|
||||
describe('POST /user/move-pinned-item/:path/move/to/:position', () => {
|
||||
let user;
|
||||
let officialPinnedItems;
|
||||
let officialPinnedItemPaths;
|
||||
|
||||
beforeEach(async () => {
|
||||
user = await generateUser();
|
||||
officialPinnedItems = getOfficialPinnedItems(user);
|
||||
const officialPinnedItems = getOfficialPinnedItems(user);
|
||||
|
||||
officialPinnedItemPaths = [];
|
||||
// officialPinnedItems are returned in { type: ..., path:... } format
|
||||
@@ -83,7 +83,7 @@ describe('POST /user/move-pinned-item/:path/move/to/:position', () => {
|
||||
expect(res).to.eql(expectedResponse);
|
||||
});
|
||||
|
||||
it('adjusts the order of pinned items with order mismatch', async () => {
|
||||
it('adjusts the order of pinned items with order mismatch - existing item in order', async () => {
|
||||
const testPinnedItems = [
|
||||
{ type: 'card', path: 'cardTypes.thankyou' },
|
||||
{ type: 'card', path: 'cardTypes.greeting' },
|
||||
@@ -125,6 +125,95 @@ describe('POST /user/move-pinned-item/:path/move/to/:position', () => {
|
||||
expect(res).to.eql(expectedResponse);
|
||||
});
|
||||
|
||||
it('adjusts the order of pinned items with order mismatch - not existing in order', async () => {
|
||||
const testPinnedItems = [
|
||||
{ type: 'card', path: 'cardTypes.thankyou' },
|
||||
{ type: 'card', path: 'cardTypes.greeting' },
|
||||
{ type: 'potion', path: 'potion' },
|
||||
{ type: 'armoire', path: 'armoire' },
|
||||
];
|
||||
|
||||
const testPinnedItemsOrder = [
|
||||
'armoire',
|
||||
'potion',
|
||||
];
|
||||
|
||||
await user.update({
|
||||
pinnedItems: testPinnedItems,
|
||||
pinnedItemsOrder: testPinnedItemsOrder,
|
||||
});
|
||||
await user.sync();
|
||||
|
||||
await user.post('/user/move-pinned-item/cardTypes.greeting/move/to/2');
|
||||
await user.sync();
|
||||
|
||||
// The basic test
|
||||
expect(user.pinnedItemsOrder[2]).to.equal('cardTypes.greeting');
|
||||
|
||||
// potion is now the last item because the 2 unacounted for cards show up
|
||||
// at the beginning of the order
|
||||
expect(user.pinnedItemsOrder[user.pinnedItemsOrder.length - 1]).to.equal('potion');
|
||||
});
|
||||
|
||||
it('adjusts the order of official pinned items with order mismatch - not existing in order', async () => {
|
||||
const testPinnedItems = [
|
||||
{ type: 'card', path: 'cardTypes.thankyou' },
|
||||
{ type: 'card', path: 'cardTypes.greeting' },
|
||||
{ type: 'potion', path: 'potion' },
|
||||
];
|
||||
|
||||
const testPinnedItemsOrder = [
|
||||
'potion',
|
||||
];
|
||||
|
||||
const { officialPinnedItems } = content;
|
||||
|
||||
// add item to pinned
|
||||
officialPinnedItems.push({ type: 'armoire', path: 'armoire' });
|
||||
|
||||
await user.update({
|
||||
pinnedItems: testPinnedItems,
|
||||
pinnedItemsOrder: testPinnedItemsOrder,
|
||||
});
|
||||
await user.sync();
|
||||
|
||||
await user.post('/user/move-pinned-item/armoire/move/to/2');
|
||||
await user.sync();
|
||||
|
||||
// The basic test
|
||||
expect(user.pinnedItemsOrder[2]).to.equal('armoire');
|
||||
|
||||
// potion is now the last item because the 2 unacounted for cards show up
|
||||
// at the beginning of the order
|
||||
expect(user.pinnedItemsOrder[user.pinnedItemsOrder.length - 1]).to.equal('potion');
|
||||
});
|
||||
|
||||
it('adjusts the order of pinned items with order mismatch - not existing - out of length', async () => {
|
||||
const testPinnedItems = [
|
||||
{ type: 'card', path: 'cardTypes.thankyou' },
|
||||
{ type: 'card', path: 'cardTypes.greeting' },
|
||||
{ type: 'potion', path: 'potion' },
|
||||
{ type: 'armoire', path: 'armoire' },
|
||||
];
|
||||
|
||||
const testPinnedItemsOrder = [
|
||||
'armoire',
|
||||
'potion',
|
||||
];
|
||||
|
||||
await user.update({
|
||||
pinnedItems: testPinnedItems,
|
||||
pinnedItemsOrder: testPinnedItemsOrder,
|
||||
});
|
||||
await user.sync();
|
||||
|
||||
await user.post('/user/move-pinned-item/cardTypes.greeting/move/to/33');
|
||||
await user.sync();
|
||||
|
||||
// since the target was out of bounce it added it to the last item
|
||||
expect(user.pinnedItemsOrder[user.pinnedItemsOrder.length - 1]).to.equal('cardTypes.greeting');
|
||||
});
|
||||
|
||||
it('cannot move pinned item that you do not have pinned', async () => {
|
||||
const testPinnedItems = [
|
||||
{ type: 'potion', path: 'potion' },
|
||||
|
||||
Reference in New Issue
Block a user