mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
237 lines
8.1 KiB
JavaScript
237 lines
8.1 KiB
JavaScript
import { createLocalVue } from '@vue/test-utils';
|
|
import { TAVERN_ID } from '@/../../common/script/constants';
|
|
import groupsUtilities from '@/mixins/groupsUtilities';
|
|
import generateStore from '@/store';
|
|
import Store from '@/libs/store';
|
|
|
|
const LocalVue = createLocalVue();
|
|
LocalVue.use(Store);
|
|
|
|
describe('Groups Utilities Mixin', () => {
|
|
let instance;
|
|
let user;
|
|
|
|
before(() => {
|
|
instance = new LocalVue({
|
|
store: generateStore(),
|
|
mixins: [groupsUtilities],
|
|
});
|
|
|
|
user = {
|
|
_id: '123',
|
|
party: {
|
|
_id: '456',
|
|
},
|
|
guilds: ['789'],
|
|
};
|
|
});
|
|
|
|
describe('isMemberOfGroup', () => {
|
|
it('registers as a method', () => {
|
|
expect(instance.isMemberOfGroup).to.exist;
|
|
});
|
|
|
|
it('returns true when the group is the Tavern', () => {
|
|
expect(instance.isMemberOfGroup(user, {
|
|
_id: TAVERN_ID,
|
|
})).to.equal(true);
|
|
});
|
|
|
|
it('returns true when the group is the user\'s party', () => {
|
|
expect(instance.isMemberOfGroup(user, {
|
|
type: 'party',
|
|
_id: user.party._id,
|
|
})).to.equal(true);
|
|
});
|
|
|
|
it('returns false when the group is not the user\'s party', () => {
|
|
expect(instance.isMemberOfGroup(user, {
|
|
type: 'party',
|
|
_id: 'not my party',
|
|
})).to.equal(false);
|
|
});
|
|
|
|
it('returns true when the group is not a guild of which the user is a member', () => {
|
|
expect(instance.isMemberOfGroup(user, {
|
|
type: 'guild',
|
|
_id: user.guilds[0],
|
|
})).to.equal(true);
|
|
});
|
|
|
|
it('returns false when the group is not a guild of which the user is a member', () => {
|
|
expect(instance.isMemberOfGroup(user, {
|
|
type: 'guild',
|
|
_id: 'not my guild',
|
|
})).to.equal(false);
|
|
});
|
|
});
|
|
|
|
describe('filterGuild', () => {
|
|
let testGroup;
|
|
let testGroup2;
|
|
|
|
before(() => {
|
|
testGroup = {
|
|
type: 'guild',
|
|
_id: user.guilds[0],
|
|
name: 'Crimson Vow',
|
|
summary: 'testing',
|
|
description: 'dummy 1',
|
|
leader: user.guilds[0], // test user is not guild leader
|
|
categories: [{
|
|
_id: '123',
|
|
slug: 'hobbies_occupations',
|
|
name: 'hobbies_occupations',
|
|
}],
|
|
categorySlugs: ['hobbies_occupations'],
|
|
memberCount: 1000,
|
|
};
|
|
testGroup2 = {
|
|
type: 'guild',
|
|
_id: '790',
|
|
name: 'CAD Cads',
|
|
summary: '3D',
|
|
description: 'My dummy',
|
|
leader: user._id, // test user is guild leader
|
|
categories: [{
|
|
_id: '123',
|
|
slug: 'hobbies_occupations',
|
|
name: 'hobbies_occupations',
|
|
}],
|
|
categorySlugs: ['hobbies_occupations'],
|
|
memberCount: 100,
|
|
};
|
|
});
|
|
|
|
it('returns true with no filter and no search', () => {
|
|
const filter = {};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns false with no filter and one search word not matching against any of the guild name, summary, and description', () => {
|
|
const filter = {};
|
|
const search = '3d';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(false);
|
|
});
|
|
|
|
it('returns true with no filter and one search word matched successfully against guild name', () => {
|
|
const filter = {};
|
|
const search = 'vow';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no filter and one search word matched successfully against guild summary', () => {
|
|
const filter = {};
|
|
const search = 'test';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no filter and one search word matched successfully against guild description', () => {
|
|
const filter = {};
|
|
const search = 'dum';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no filter and two search words with two spaces in between matched successfully against guild name', () => {
|
|
const filter = {};
|
|
const search = 'cad test';
|
|
expect(instance.filterGuild(testGroup2, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no filter and two search words with two spaces in between matched successfully against guild summary', () => {
|
|
const filter = {};
|
|
const search = 'cad 3d';
|
|
expect(instance.filterGuild(testGroup2, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no filter and two search words with two spaces in between matched successfully against guild description', () => {
|
|
const filter = {};
|
|
const search = 'my dummy';
|
|
expect(instance.filterGuild(testGroup2, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns false with no search word and one filter category that does not match against any guild categories', () => {
|
|
const filter = {
|
|
categories: ['academics'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(false);
|
|
});
|
|
|
|
it('returns true with no search word and one filter category that matches successfully against any guild categories', () => {
|
|
const filter = {
|
|
categories: ['hobbies_occupations'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns false with no search word and one filter role that does not match against guild role', () => {
|
|
const filter = {
|
|
roles: ['guild_leader'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(false);
|
|
});
|
|
|
|
it('returns true with no search word and one filter role that matches successfully against guild role', () => {
|
|
const filter = {
|
|
roles: ['member'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no search word and filter size silver tier that matches against a guild size of 1000, the max guild size belonging to silver tier', () => {
|
|
const filter = {
|
|
guildSize: 'gold_tier',
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns true with no search word and filter size bronze tier that matches against a guild size of 100, the max guild size belonging to bronze tier', () => {
|
|
const filter = {
|
|
guildSize: 'silver_tier',
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup2, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns false with no search word and filter category that matches successfully against one guild category and filter role that does not match against guild role', () => {
|
|
const filter = {
|
|
categories: ['hobbies_occupations'],
|
|
roles: ['guild_leader'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(false);
|
|
});
|
|
|
|
it('returns true with no search word and filter category that matches successfully against one guild category and filter role that matches successfully against guild role', () => {
|
|
const filter = {
|
|
categories: ['hobbies_occupations'],
|
|
roles: ['guild_leader'],
|
|
};
|
|
const search = '';
|
|
expect(instance.filterGuild(testGroup2, filter, search, user)).to.equal(true);
|
|
});
|
|
|
|
it('returns false with one search word that does not match against guild name and one filter category that matches successfully against guild categories', () => {
|
|
const filter = {
|
|
categories: ['hobbies_occupations'],
|
|
};
|
|
const search = 'konnichiwa';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(false);
|
|
});
|
|
|
|
it('returns true with one search word that matches against guild name and one filter role that matches successfully against guild role', () => {
|
|
const filter = {
|
|
categories: ['hobbies_occupations'],
|
|
};
|
|
const search = 'vow';
|
|
expect(instance.filterGuild(testGroup, filter, search, user)).to.equal(true);
|
|
});
|
|
});
|
|
});
|