mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
Unit Tests; 1 fix to appFooter debug menu (#10894)
* Built
* Update .editorconfig
* Fixed filename ('translaotr.js' => 'translator.js')
* Fixed Filename
* User Unit Tests
* Writing tests for avatar.vue
* writing tests for getters/user.js
* Writing Tests for avatar.vue
* Writing Tests for avatar.vue
* writing tests for store/getters/user.js
* renamed file
* Integrated test into user.test.js
* Reverting
* Fetching most recent version
* +1 Level now adds a level
* updating to current version
* Minor edits to pass lint test
* Removing non-functional Tests
* Cleaning up
This commit is contained in:
committed by
Matteo Pagliazzi
parent
19b75c6257
commit
0b352b9103
300
test/client/unit/specs/components/avatar.vue.test.js
Normal file
300
test/client/unit/specs/components/avatar.vue.test.js
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
import Avatar from 'client/components/avatar';
|
||||||
|
import Vue from 'vue';
|
||||||
|
import generateStore from 'client/store';
|
||||||
|
|
||||||
|
context('avatar.vue', () => {
|
||||||
|
let Constructr;
|
||||||
|
let vm;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
Constructr = Vue.extend(Avatar);
|
||||||
|
|
||||||
|
vm = new Constructr({
|
||||||
|
propsData: {
|
||||||
|
member: {
|
||||||
|
stats: {
|
||||||
|
buffs: {},
|
||||||
|
},
|
||||||
|
preferences: {
|
||||||
|
hair: {},
|
||||||
|
},
|
||||||
|
items: {
|
||||||
|
gear: {
|
||||||
|
equipped: {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).$mount();
|
||||||
|
|
||||||
|
vm.$store = generateStore();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
vm.$destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('hasClass', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
stats: { lvl: 17 },
|
||||||
|
preferences: { disableClasses: true },
|
||||||
|
flags: { classSelected: false },
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accurately reports class status', () => {
|
||||||
|
expect(vm.hasClass).to.equal(false);
|
||||||
|
|
||||||
|
vm.member.preferences.disableClasses = false;
|
||||||
|
vm.member.flags.classSelected = true;
|
||||||
|
|
||||||
|
expect(vm.hasClass).to.equal(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('isBuffed', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {
|
||||||
|
buffs: {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accurately reports if buffed', () => {
|
||||||
|
expect(vm.isBuffed).to.equal(undefined);
|
||||||
|
|
||||||
|
vm.member.stats.buffs = { str: 1 };
|
||||||
|
|
||||||
|
expect(vm.isBuffed).to.equal(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('paddingTop', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
items: {},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('defaults to 28px', () => {
|
||||||
|
vm.avatarOnly = true;
|
||||||
|
expect(vm.paddingTop).to.equal('28px');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is 24.5px if user has a pet', () => {
|
||||||
|
vm.member.items = {
|
||||||
|
currentPet: { name: 'Foo' },
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.paddingTop).to.equal('24.5px');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is 0px if user has a mount', () => {
|
||||||
|
vm.member.items = {
|
||||||
|
currentMount: { name: 'Bar' },
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.paddingTop).to.equal('0px');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can be overriden', () => {
|
||||||
|
vm.overrideTopPadding = '27px';
|
||||||
|
expect(vm.paddingTop).to.equal('27px');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('costumeClass', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
preferences: {},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns if showing equiped gear', () => {
|
||||||
|
expect(vm.costumeClass).to.equal('equipped');
|
||||||
|
});
|
||||||
|
it('returns if wearing a costume', () => {
|
||||||
|
vm.member.preferences = { costume: true };
|
||||||
|
expect(vm.costumeClass).to.equal('costume');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('visualBuffs', () => {
|
||||||
|
it('returns an array of buffs', () => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {
|
||||||
|
class: 'Warrior',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.visualBuffs).to.include({snowball: 'snowman'});
|
||||||
|
expect(vm.visualBuffs).to.include({spookySparkles: 'ghost'});
|
||||||
|
expect(vm.visualBuffs).to.include({shinySeed: 'avatar_floral_Warrior'});
|
||||||
|
expect(vm.visualBuffs).to.include({seafoam: 'seafoam_star'});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('backgroundClass', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member.preferences = { background: 'pony' };
|
||||||
|
});
|
||||||
|
|
||||||
|
it('shows the background', () => {
|
||||||
|
expect(vm.backgroundClass).to.equal('background_pony');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can be overridden', () => {
|
||||||
|
vm.overrideAvatarGear = { background: 'character' };
|
||||||
|
|
||||||
|
expect(vm.backgroundClass).to.equal('background_character');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns to a blank string if not showing background', () => {
|
||||||
|
vm.withBackground = false;
|
||||||
|
vm.avatarOnly = true;
|
||||||
|
|
||||||
|
expect(vm.backgroundClass).to.equal('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('specialMountClass', () => {
|
||||||
|
it('checks if riding a Kangaroo', () => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {
|
||||||
|
class: 'None',
|
||||||
|
},
|
||||||
|
items: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.specialMountClass).to.equal(undefined);
|
||||||
|
|
||||||
|
vm.member.items = {
|
||||||
|
currentMount: ['Kangaroo'],
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.specialMountClass).to.equal('offset-kangaroo');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('skinClass', () => {
|
||||||
|
it('returns current skin color', () => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {},
|
||||||
|
preferences: {
|
||||||
|
skin: 'blue',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.skinClass).to.equal('skin_blue');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns if sleep or not', () => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {},
|
||||||
|
preferences: {
|
||||||
|
skin: 'blue',
|
||||||
|
sleep: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(vm.skinClass).to.equal('skin_blue');
|
||||||
|
|
||||||
|
vm.member.preferences.sleep = true;
|
||||||
|
|
||||||
|
expect(vm.skinClass).to.equal('skin_blue_sleep');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
context('methods', () => {
|
||||||
|
describe('getGearClass', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
items: {
|
||||||
|
gear: {
|
||||||
|
equipped: { Hat: 'Fancy Tophat' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
preferences: { costume: false },
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined if no match', () => {
|
||||||
|
expect(vm.getGearClass('foo')).to.equal(undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns the matching gear', () => {
|
||||||
|
expect(vm.getGearClass('Hat')).to.equal('Fancy Tophat');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can be overridden', () => {
|
||||||
|
vm.overrideAvatarGear = { Hat: 'Dapper Bowler' };
|
||||||
|
|
||||||
|
expect(vm.getGearClass('Hat')).to.equal('Dapper Bowler');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('hideGear', () => {
|
||||||
|
it('returns no weapon equipped', () => {
|
||||||
|
vm.member.items.gear.equipped = {};
|
||||||
|
expect(vm.hideGear('weapon')).to.equal(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
items: {
|
||||||
|
gear: {
|
||||||
|
equipped: {
|
||||||
|
weapon: {
|
||||||
|
baseWeapon: 'Spoon',
|
||||||
|
twoHanded: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
preferences: { costume: false },
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('show avatar', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vm.member = {
|
||||||
|
stats: {
|
||||||
|
buffs: {
|
||||||
|
snowball: false,
|
||||||
|
seafoam: false,
|
||||||
|
spookySparkles: false,
|
||||||
|
shinySeed: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
it('does if not showing visual buffs', () => {
|
||||||
|
expect(vm.showAvatar()).to.equal(true);
|
||||||
|
|
||||||
|
let buffs = vm.member.stats.buffs;
|
||||||
|
|
||||||
|
buffs.snowball = true;
|
||||||
|
expect(vm.showAvatar()).to.equal(false);
|
||||||
|
|
||||||
|
buffs.snowball = false;
|
||||||
|
buffs.spookySparkles = true;
|
||||||
|
expect(vm.showAvatar()).to.equal(false);
|
||||||
|
|
||||||
|
buffs.spookySparkles = false;
|
||||||
|
buffs.shinySeed = true;
|
||||||
|
expect(vm.showAvatar()).to.equal(false);
|
||||||
|
|
||||||
|
buffs.shinySeed = false;
|
||||||
|
buffs.seafoam = true;
|
||||||
|
expect(vm.showAvatar()).to.equal(false);
|
||||||
|
|
||||||
|
buffs.seafoam = false;
|
||||||
|
vm.showVisualBuffs = false;
|
||||||
|
expect(vm.showAvatar()).to.equal(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
76
test/client/unit/specs/store/getters/user/user.test.js
Normal file
76
test/client/unit/specs/store/getters/user/user.test.js
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import { data, gems, buffs, preferences, tasksOrder } from 'client/store/getters/user';
|
||||||
|
|
||||||
|
context('user getters', () => {
|
||||||
|
describe('data', () => {
|
||||||
|
it('returns the user\'s data', () => {
|
||||||
|
expect(data({
|
||||||
|
state: {
|
||||||
|
user: {
|
||||||
|
data: {
|
||||||
|
lvl: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).lvl).to.equal(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('gems', () => {
|
||||||
|
it('returns the user\'s gems', () => {
|
||||||
|
expect(gems({
|
||||||
|
state: {
|
||||||
|
user: {
|
||||||
|
data: { balance: 4.5 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})).to.equal(18);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('buffs', () => {
|
||||||
|
it('returns the user\'s buffs', () => {
|
||||||
|
expect(buffs({
|
||||||
|
state: {
|
||||||
|
user: {
|
||||||
|
data: {
|
||||||
|
stats: {
|
||||||
|
buffs: [1],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})(0)).to.equal(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('preferences', () => {
|
||||||
|
it('returns the user\'s preferences', () => {
|
||||||
|
expect(preferences({
|
||||||
|
state: {
|
||||||
|
user: {
|
||||||
|
data: {
|
||||||
|
preferences: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})).to.equal(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('tasksOrder', () => {
|
||||||
|
it('returns the user\'s tasksOrder', () => {
|
||||||
|
expect(tasksOrder({
|
||||||
|
state: {
|
||||||
|
user: {
|
||||||
|
tasksOrder: {
|
||||||
|
masters: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})('master')).to.equal(1);
|
||||||
|
|
||||||
|
expect(tasksOrder()).to.not.equal('null');
|
||||||
|
expect(tasksOrder()).to.not.equal('undefined');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import { gems as userGems } from 'client/store/getters/user';
|
|
||||||
|
|
||||||
describe('userGems getter', () => {
|
|
||||||
it('returns the user\'s gems', () => {
|
|
||||||
expect(userGems({
|
|
||||||
state: {
|
|
||||||
user: {
|
|
||||||
data: {balance: 4.5},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})).to.equal(18);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -96,6 +96,7 @@
|
|||||||
a.btn.btn-secondary(@click="plusTenHealth()") + 10HP
|
a.btn.btn-secondary(@click="plusTenHealth()") + 10HP
|
||||||
a.btn.btn-secondary(@click="addMana()") +MP
|
a.btn.btn-secondary(@click="addMana()") +MP
|
||||||
a.btn.btn-secondary(@click="addLevelsAndGold()") +Exp +GP +MP
|
a.btn.btn-secondary(@click="addLevelsAndGold()") +Exp +GP +MP
|
||||||
|
a.btn.btn-secondary(@click="addExp()") +Exp
|
||||||
a.btn.btn-secondary(@click="addOneLevel()") +1 Level
|
a.btn.btn-secondary(@click="addOneLevel()") +1 Level
|
||||||
a.btn.btn-secondary(@click="addQuestProgress()", tooltip="+1000 to boss quests. 300 items to collection quests") Quest Progress Up
|
a.btn.btn-secondary(@click="addQuestProgress()", tooltip="+1000 to boss quests. 300 items to collection quests") Quest Progress Up
|
||||||
a.btn.btn-secondary(@click="makeAdmin()") Make Admin
|
a.btn.btn-secondary(@click="makeAdmin()") Make Admin
|
||||||
@@ -326,7 +327,7 @@ export default {
|
|||||||
'stats.mp': this.user.stats.mp + 10000,
|
'stats.mp': this.user.stats.mp + 10000,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
addOneLevel () {
|
addExp () {
|
||||||
// @TODO: Name these variables better
|
// @TODO: Name these variables better
|
||||||
let exp = 0;
|
let exp = 0;
|
||||||
let five = 10 * this.user.stats.lvl;
|
let five = 10 * this.user.stats.lvl;
|
||||||
@@ -340,6 +341,11 @@ export default {
|
|||||||
'stats.exp': exp,
|
'stats.exp': exp,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
addOneLevel () {
|
||||||
|
this.$store.dispatch('user:set', {
|
||||||
|
'stats.lvl': this.user.stats.lvl + 1,
|
||||||
|
});
|
||||||
|
},
|
||||||
async addQuestProgress () {
|
async addQuestProgress () {
|
||||||
await axios.post('/api/v4/debug/quest-progress');
|
await axios.post('/api/v4/debug/quest-progress');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user