Files
habitica/website/client/tests/unit/mixins/groupsUtilities.spec.js
negue 5a19c25fea Pin Habitica Eslint Config (#15057)
* Pin Habitica Eslint Config

* fix lint
2023-12-27 18:20:49 +01:00

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);
});
});
});