Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit 2c2beac

Browse files
committed
Split language config into separate store module with it's own spec.
1 parent c9766d5 commit 2c2beac

File tree

5 files changed

+84
-22
lines changed

5 files changed

+84
-22
lines changed

src/store/index.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import Vue from 'vue';
22
import Vuex from 'vuex';
33
import order from './modules/order';
4+
import language from './modules/language';
45

56
Vue.use(Vuex);
67

78
export default new Vuex.Store({
89
state: {
910
loggedInUser: null,
1011
dojo: null,
11-
chosenLanguageConfig: null,
1212
},
1313
mutations: {
1414
setLoggedInUser(state, user) {
@@ -17,9 +17,6 @@ export default new Vuex.Store({
1717
setDojo(state, dojo) {
1818
Vue.set(state, 'dojo', dojo);
1919
},
20-
setChosenLanguageConfig(state, chosenLanguageConfig) {
21-
Vue.set(state, 'chosenLanguageConfig', chosenLanguageConfig);
22-
},
2320
},
2421
actions: {
2522
async getLoggedInUser({ commit }) {
@@ -32,9 +29,6 @@ export default new Vuex.Store({
3229
const dojo = (await Vue.http.get(`${Vue.config.apiServer}/api/2.0/dojos/${dojoId}`)).body;
3330
commit('setDojo', dojo);
3431
},
35-
updateChosenLanguageConfig({ commit }, chosenLanguageConfig) {
36-
commit('setChosenLanguageConfig', chosenLanguageConfig);
37-
},
3832
},
3933
getters: {
4034
loggedInUser: (state) => {
@@ -52,13 +46,13 @@ export default new Vuex.Store({
5246
state.loggedInUser.login !== null &&
5347
state.loggedInUser.login.id !== undefined,
5448
dojo: state => state.dojo,
55-
chosenLanguageConfig: state => state.chosenLanguageConfig,
5649
// User properties
5750
hasRequests: (state, getters) => getters.isLoggedIn &&
5851
getters.loggedInUser.joinRequests &&
5952
getters.loggedInUser.joinRequests.length > 0,
6053
},
6154
modules: {
6255
order,
56+
language,
6357
},
6458
});

src/store/modules/language.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import Vue from 'vue';
2+
3+
const state = {
4+
chosenLanguageConfig: null,
5+
};
6+
7+
export const mutations = {
8+
setChosenLanguageConfig(state, chosenLanguageConfig) {
9+
Vue.set(state, 'chosenLanguageConfig', chosenLanguageConfig);
10+
},
11+
};
12+
13+
export const actions = {
14+
updateChosenLanguageConfig({ commit }, chosenLanguageConfig) {
15+
commit('setChosenLanguageConfig', chosenLanguageConfig);
16+
},
17+
}
18+
19+
export const getters = {
20+
chosenLanguageConfig: state => state.chosenLanguageConfig,
21+
}
22+
23+
export default {
24+
namespaced: false,
25+
state,
26+
mutations,
27+
actions,
28+
getters,
29+
};
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { mutations, actions, getters } from '@/store/modules/language';
2+
import { expect } from 'chai';
3+
4+
describe('Language Store', () => {
5+
describe('mutations', () => {
6+
const { setChosenLanguageConfig } = mutations
7+
it('setChosenLanguageConfig', () => {
8+
const state = { chosenLanguageConfig: null };
9+
const newLanguageConfig = { dir: 'test' };
10+
11+
setChosenLanguageConfig(state, newLanguageConfig);
12+
13+
expect(state.chosenLanguageConfig.dir).to.eq('test');
14+
});
15+
});
16+
17+
describe('actions', () => {
18+
it('updateChosenLanguageConfig', () => {
19+
const commit = sinon.spy()
20+
const state = {};
21+
22+
const chosenLanguageConfig = { dir: 'down' };
23+
24+
actions.updateChosenLanguageConfig({ commit, state }, chosenLanguageConfig);
25+
26+
expect(commit.args).to.deep.equal([['setChosenLanguageConfig', chosenLanguageConfig]]);
27+
});
28+
});
29+
30+
describe('getters', () => {
31+
it('chosenLanguageConfig', () => {
32+
const state = { chosenLanguageConfig: { dir: 'left' } };
33+
expect(getters.chosenLanguageConfig(state).dir).to.eq('left');
34+
});
35+
});
36+
});

test/unit/specs/store/store.spec.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import store from '@/store/';
22
import { expect } from 'chai';
33

4-
describe.only('Store', () => {
4+
describe('Store', () => {
55
describe('mutations', () => {
6-
it('setChosenLanguageConfig', () => {
7-
const newLanguageConfig = { dir: 'test' };
6+
// it('setChosenLanguageConfig', () => {
7+
// console.log('store ', store);
8+
// const newLanguageConfig = { dir: 'test' };
89

9-
store.commit('setChosenLanguageConfig', newLanguageConfig);
10+
// store.commit('setChosenLanguageConfig', newLanguageConfig);
1011

11-
expect(store.state.chosenLanguageConfig.dir).to.eq('test');
12-
});
12+
// expect(store.state.chosenLanguageConfig.dir).to.eq('test');
13+
// });
1314

1415
it('setLoggedInUser', () => {
1516
const user = { user: 'bob' };
@@ -26,5 +27,13 @@ describe.only('Store', () => {
2627

2728
expect(store.state.dojo.name).to.eq('SuperDojo');
2829
});
29-
})
30+
});
31+
32+
// describe('actions', () => {
33+
// it('updateChosenLanguageConfig', () => {
34+
// console.log('actions: ', store._actions);
35+
// const commit = sinon.spy()
36+
// const state = {};
37+
// });
38+
// });
3039
});

test/unit/specs/users/service.spec.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@ import Vue from 'vue';
22
import UserService from 'inject-loader!@/users/service';
33

44
describe('UserService', () => {
5-
let storeMock;
65
let UserServiceWithMocks;
76

87
beforeEach(() => {
9-
storeMock = {
10-
dispatch: sinon.stub(),
11-
};
12-
UserServiceWithMocks = UserService({
13-
'@/store': storeMock,
14-
}).default;
8+
UserServiceWithMocks = UserService().default;
159
});
1610

1711
afterEach(() => {

0 commit comments

Comments
 (0)