mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 13:17:24 +01:00
* initial commit * update logic to display flagged challenges properly to users and admins * add report button to pages 'My Challenges' and 'Discover Challenges' * allow mods to view flagged messages on challengeDetail view * update showing flagged challenges for group challenges * update showing flagged challenges for a specific challenge * disallow closing a flagged challenge * update notes to reflect apiParams properly * fix css spacing * update challenge en locales * fix spacing * update title of closeChallengeModal * let user know flagged challenges cannot be cloned * fix linting errors * ensure flagged challenges cannot be declared with a winner and cloned via API * define a non user challenge properly * fix logic to check for a nonParticipant and nonLeader user when grabbing flagged challenges * fix linting of max character of 100 / line * remove reporting on 'my challenges' and 'discover challenges' * WIP(challenges): disable clone button and add notes to new functions * WIP(challenges): smol changes * WIP(challenges): clone button only disabled for admin and flagged user; other users can still clone but the flag goes along with the clone * WIP(challenges): stop flags carrying over on cloned challenges * WIP(challenges): typo fixing, undoing a smol change * fix(challenges): improved query logic for flags * WIP(challenges): more smol changes * fix(challenges): refactor queries * fix(challenges): correct My Challenges tab logic * WIP(challenges): fix clone button state * WIP(challenges): really fixed clone button & clear flags from clones * WIP(challenge): implement new design for reporting modal * WIP(challenge): making things pretty * WIP(challenge): conquering the close button * WIP(challenge): fixin some spacing * WIP(challenge): smol fix * WIP(challenge): making sure the button is actually disabled * WIP(challenge): fix blockquote css * fix(tests): no private guilds * fix(lint): curlies etc * fix(test): moderator permission * fix(lint): sure man whatever * fix(lint): bad vim no tabby * fix(test): permissions not contrib lol * fix(challenges): add icon and fix leaky CSS * fix(challenge): correct clone button behavior --------- Co-authored-by: Julius Jung <me@matchajune.io> Co-authored-by: SabreCat <sabe@habitica.com> Co-authored-by: Sabe Jones <sabrecat@gmail.com>
63 lines
1.8 KiB
JavaScript
63 lines
1.8 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 challenge;
|
|
|
|
beforeEach(async () => {
|
|
const { group, groupLeader } = await createAndPopulateGroup({
|
|
groupDetails: {
|
|
name: 'TestParty',
|
|
type: 'party',
|
|
privacy: 'private',
|
|
},
|
|
members: 1,
|
|
});
|
|
|
|
user = groupLeader;
|
|
|
|
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.update({ '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'),
|
|
});
|
|
});
|
|
});
|