Fix/mana bar unselected class - fix: #10026 (#10126)

* Update getClass() for users who have not yet selected a class

* Added tests for members.getClass()

* fix linter errors

* Update test

* Update import in test to point to correct module

* use hasClass() getter where appropriate

* Fix linter error
This commit is contained in:
Mark Kuba
2018-03-24 09:15:40 -07:00
committed by Sabe Jones
parent ec6f53bb1b
commit dcd680c293
8 changed files with 83 additions and 7 deletions

View File

@@ -0,0 +1,63 @@
import { hasClass } from 'client/store/getters/members';
describe('hasClass getter', () => {
it('returns false if level < 10', () => {
const member = {
stats: {
lvl: 5,
},
preferences: {
disableClasses: false,
},
flags: {
classSelected: true,
},
};
expect(hasClass()(member)).to.equal(false);
});
it('returns false if member has disabled classes', () => {
const member = {
stats: {
lvl: 10,
},
preferences: {
disableClasses: true,
},
flags: {
classSelected: true,
},
};
expect(hasClass()(member)).to.equal(false);
});
it('returns false if member has not yet selected a class', () => {
const member = {
stats: {
lvl: 10,
},
preferences: {
disableClasses: false,
},
flags: {
classSelected: false,
},
};
expect(hasClass()(member)).to.equal(false);
});
it('returns true when all conditions are met', () => {
const member = {
stats: {
lvl: 10,
},
preferences: {
disableClasses: false,
},
flags: {
classSelected: true,
},
};
expect(hasClass()(member)).to.equal(true);
});
});

View File

@@ -149,7 +149,7 @@ export default {
computed: {
...mapState({user: 'user.data'}),
showAllocation () {
return this.user.flags.classSelected && !this.user.preferences.disableClasses && !this.user.preferences.automaticAllocation;
return this.$store.getters['members:hasClass'](this.user) && !this.user.preferences.automaticAllocation;
},
},
methods: {

View File

@@ -185,7 +185,7 @@ export default {
// skipping those not defined in the handledNotifications object
notifications.push(...this.user.notifications.filter(notification => {
if (notification.type === 'UNALLOCATED_STATS_POINTS') {
if (!this.user.flags.classSelected || this.user.preferences.disableClasses) return false;
if (!this.hasClass) return false;
}
return orderMap[notification.type] !== undefined;
@@ -212,6 +212,9 @@ export default {
return notification.seen === false ? true : false;
});
},
hasClass () {
return this.$store.getters['members:hasClass'](this.user);
},
},
methods: {
...mapActions({

View File

@@ -244,7 +244,8 @@ export default {
},
userMp (after, before) {
if (after === before) return;
if (!this.user.flags.classSelected || this.user.preferences.disableClasses) return;
if (!this.$store.getters['members:hasClass'](this.user)) return;
let mana = after - before;
this.mp(mana);
},

View File

@@ -31,7 +31,7 @@
option(v-for='sound in availableAudioThemes', :value='sound') {{ $t(`audioTheme_${sound}`) }}
hr
.form-horizontal(v-if='user.flags.classSelected && !user.preferences.disableClasses')
.form-horizontal(v-if='hasClass')
h5 {{ $t('characterBuild') }}
h6(v-once) {{ $t('class') + ': ' }}
// @TODO: what is classText
@@ -270,6 +270,9 @@ export default {
dayStart () {
return this.user.preferences.dayStart;
},
hasClass () {
return this.$store.getters['members:hasClass'](this.user);
},
},
methods: {
set (preferenceType, subtype) {

View File

@@ -235,7 +235,7 @@ div
li
strong {{$t('buffs')}}:
| {{user.stats.buffs[stat]}}
#allocation(v-if='user._id === userLoggedIn._id && user.flags.classSelected && !user.preferences.disableClasses')
#allocation(v-if='user._id === userLoggedIn._id && hasClass')
.row.title-row
.col-12.col-md-6
h3(v-if='userLevel100Plus', v-once, v-html="$t('noMoreAllocate')")
@@ -733,6 +733,9 @@ export default {
startingPageOption () {
return this.$store.state.profileOptions.startingPage;
},
hasClass () {
return this.$store.getters['members:hasClass'](this.userLoggedIn);
},
},
watch: {
startingPageOption () {

View File

@@ -116,7 +116,7 @@
popover-placement='right', :popover="$t('streaksFrozenText')")
| {{ $t('streaksFrozen') }}
.col-4(v-if='user.flags.classSelected && !user.preferences.disableClasses')
.col-4(v-if='hasClass')
h3(v-once) {{ $t('characterBuild') }}
h4(v-once) {{ $t('class') + ': ' }}
span {{ classText }}&nbsp;
@@ -239,6 +239,9 @@ export default {
return classTexts[this.user.stats.class];
},
hasClass () {
return this.$store.getters['members:hasClass'](this.user);
},
},
methods: {
formatAnimal (animalName, type) {

View File

@@ -7,6 +7,6 @@ export function isBuffed () {
export function hasClass () {
return (member) => {
return member.stats.lvl >= 10 && !member.preferences.disableClasses;
return member.stats.lvl >= 10 && !member.preferences.disableClasses && member.flags.classSelected;
};
}