mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-05-22 13:48:46 +00:00
commit d30dff2311087ff2fe5f3e2a913c594abeee6b0e
Author: Sabe Jones <sabe@habitica.com>
Date: Tue Feb 27 16:01:11 2024 -0600
fix(challenge): move isOfficial to mount process
commit ae52dca3cd0b4fd490f07b1979049803ce2f1e2f
Merge: 2b20ff1e46 2c6e82a58a
Author: Sabe Jones <sabe@habitica.com>
Date: Tue Feb 27 15:20:40 2024 -0600
Merge branch 'release' into phillip/challenges_official
commit 2b20ff1e46b1447eac3f9dbdf29566154c9fa656
Author: Sabe Jones <sabe@habitica.com>
Date: Wed Feb 14 15:31:22 2024 -0600
fix(tests): correct lint and TypeError
commit 5dae5c716f11db4c652e423eab43805ddfac3455
Merge: 29d9edc7aa 1a3c2f64e4
Author: Sabe Jones <sabe@habitica.com>
Date: Wed Feb 14 15:01:18 2024 -0600
Merge branch 'release' into phillip/challenges_official
commit 29d9edc7aa7445d24f5be24ca923719a4ab5f70d
Author: Sabe Jones <sabe@habitica.com>
Date: Wed Feb 14 14:41:16 2024 -0600
fix(challenges): don't momentarily show Report on official
commit f994d12775107cba7ec816ee522cfeb0c69ef567
Author: Phillip Thelen <phillip@habitica.com>
Date: Tue Feb 13 10:08:08 2024 +0100
hide report button for official challenges
commit ac06dcaca701b91913d5fc5307626b1616a9e0e8
Author: Phillip Thelen <phillip@habitica.com>
Date: Tue Feb 13 10:04:49 2024 +0100
prevent official challenges from being flagged
commit a07ce1e6de66a2c833c6f392cf396a7743ca0f97
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Feb 5 19:12:17 2024 +0100
test shouldn’t be exclusive
commit 4c2436a1a0fa905530b7e1cd66f75a2b07be5810
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Feb 5 19:11:20 2024 +0100
remove log
commit 292f3a578d51fd08c572afc574cc73d08356f46a
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Feb 5 19:10:13 2024 +0100
Automatically set official field on challenges if habitica_official cateogory is set
79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
import { v4 as generateUUID } from 'uuid';
|
|
import {
|
|
generateChallenge,
|
|
createAndPopulateGroup,
|
|
translate as t,
|
|
} from '../../../../helpers/api-integration/v3';
|
|
|
|
describe('POST /challenges/:challengeId/flag', () => {
|
|
let user;
|
|
let challengeGroup;
|
|
let challenge;
|
|
|
|
beforeEach(async () => {
|
|
const { group, groupLeader } = await createAndPopulateGroup({
|
|
groupDetails: {
|
|
name: 'TestParty',
|
|
type: 'party',
|
|
privacy: 'private',
|
|
},
|
|
members: 1,
|
|
});
|
|
|
|
user = groupLeader;
|
|
challengeGroup = group;
|
|
|
|
challenge = await generateChallenge(user, group);
|
|
});
|
|
|
|
it('returns an error when challenge is not found', async () => {
|
|
await expect(user.post(`/challenges/${generateUUID()}/flag`))
|
|
.to.eventually.be.rejected.and.eql({
|
|
code: 404,
|
|
error: 'NotFound',
|
|
message: t('challengeNotFound'),
|
|
});
|
|
});
|
|
|
|
it('flags a challenge', async () => {
|
|
const flagResult = await user.post(`/challenges/${challenge._id}/flag`);
|
|
|
|
expect(flagResult.challenge.flags[user._id]).to.equal(true);
|
|
expect(flagResult.challenge.flagCount).to.equal(1);
|
|
});
|
|
|
|
it('flags a challenge with a higher count when from an admin', async () => {
|
|
await user.updateOne({ 'contributor.admin': true });
|
|
|
|
const flagResult = await user.post(`/challenges/${challenge._id}/flag`);
|
|
|
|
expect(flagResult.challenge.flags[user._id]).to.equal(true);
|
|
expect(flagResult.challenge.flagCount).to.equal(5);
|
|
});
|
|
|
|
it('returns an error when user tries to flag a challenge that is already flagged', async () => {
|
|
await user.post(`/challenges/${challenge._id}/flag`);
|
|
|
|
await expect(user.post(`/challenges/${challenge._id}/flag`))
|
|
.to.eventually.be.rejected.and.eql({
|
|
code: 404,
|
|
error: 'NotFound',
|
|
message: t('messageChallengeFlagAlreadyReported'),
|
|
});
|
|
});
|
|
|
|
it('returns an error when user tries to flag an official challenge', async () => {
|
|
await user.updateOne({
|
|
permissions: {
|
|
challengeAdmin: true,
|
|
},
|
|
});
|
|
challenge = await generateChallenge(user, challengeGroup, { official: true });
|
|
await expect(user.post(`/challenges/${challenge._id}/flag`))
|
|
.to.eventually.be.rejected.and.eql({
|
|
code: 404,
|
|
error: 'NotFound',
|
|
message: t('messageChallengeFlagOfficial'),
|
|
});
|
|
});
|
|
});
|