Skip to content

Commit 8138110

Browse files
authored
Merge branch 'on3iro:main' into main
2 parents f892c03 + 973bb65 commit 8138110

File tree

13 files changed

+262
-14
lines changed

13 files changed

+262
-14
lines changed

src/Redux/Store/TurnOrder/Configuration/__test__/helpers.test.ts

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414

1515
const mockConfiguration: State = {
1616
Mode: 'Blitz',
17+
Friend: false,
18+
Foe: false,
1719
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
1820
SelectedSetup: AERData.turnordersetups['fourPlayers'].variations['default'],
1921
}
@@ -38,6 +40,46 @@ describe('adjustSetup()', () => {
3840
const defaultVariation =
3941
AERData.turnordersetups.twoPlayers.variations['default']
4042

43+
it('should add friend card', () => {
44+
const expected = {
45+
id: 'default',
46+
name: 'Default',
47+
turnOrderCards: [
48+
AERData.turnordercards['player1-1'],
49+
AERData.turnordercards['player1-2'],
50+
AERData.turnordercards['player2-1'],
51+
AERData.turnordercards['player2-2'],
52+
AERData.turnordercards['nemesis-1'],
53+
AERData.turnordercards['nemesis-2'],
54+
AERData.turnordercards['friend'],
55+
],
56+
}
57+
58+
const result = adjustSetup('Default', true, false, defaultVariation)
59+
60+
expect(result).toEqual(expected)
61+
})
62+
63+
it('should add foe card', () => {
64+
const expected = {
65+
id: 'default',
66+
name: 'Default',
67+
turnOrderCards: [
68+
AERData.turnordercards['player1-1'],
69+
AERData.turnordercards['player1-2'],
70+
AERData.turnordercards['player2-1'],
71+
AERData.turnordercards['player2-2'],
72+
AERData.turnordercards['nemesis-1'],
73+
AERData.turnordercards['nemesis-2'],
74+
AERData.turnordercards['foe'],
75+
],
76+
}
77+
78+
const result = adjustSetup('Default', false, true, defaultVariation)
79+
80+
expect(result).toEqual(expected)
81+
})
82+
4183
it('should return the default variation of tocs for 2 players', () => {
4284
const expected = {
4385
id: 'default',
@@ -52,7 +94,7 @@ describe('adjustSetup()', () => {
5294
],
5395
}
5496

55-
const result = adjustSetup('Default', defaultVariation)
97+
const result = adjustSetup('Default', false, false, defaultVariation)
5698

5799
expect(result).toEqual(expected)
58100
})
@@ -71,7 +113,7 @@ describe('adjustSetup()', () => {
71113
],
72114
}
73115

74-
const result = adjustSetup('Maelstrom', defaultVariation)
116+
const result = adjustSetup('Maelstrom', false, false, defaultVariation)
75117

76118
expect(result).toEqual(expected)
77119
})
@@ -90,7 +132,7 @@ describe('adjustSetup()', () => {
90132
],
91133
}
92134

93-
const result = adjustSetup('Blitz', defaultVariation)
135+
const result = adjustSetup('Blitz', false, false, defaultVariation)
94136

95137
expect(result).toEqual(expected)
96138
})
@@ -109,7 +151,7 @@ describe('adjustSetup()', () => {
109151
],
110152
}
111153

112-
const result = adjustSetup('Blitz + Maelstrom', defaultVariation)
154+
const result = adjustSetup('Blitz + Maelstrom', false, false, defaultVariation)
113155

114156
expect(result).toEqual(expected)
115157
})
@@ -128,7 +170,7 @@ describe('adjustSetup()', () => {
128170
],
129171
}
130172

131-
const result = adjustSetup('Thief Of Dreams', defaultVariation)
173+
const result = adjustSetup('Thief Of Dreams', false, false, defaultVariation)
132174

133175
expect(result).toEqual(expected)
134176
})
@@ -147,7 +189,7 @@ describe('adjustSetup()', () => {
147189
],
148190
}
149191

150-
const result = adjustSetup('Paradox of Myth and Bone', defaultVariation)
192+
const result = adjustSetup('Paradox of Myth and Bone', false, false, defaultVariation)
151193

152194
expect(result).toEqual(expected)
153195
})

src/Redux/Store/TurnOrder/Configuration/__test__/reducer.test.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414

1515
const mockConfiguration: State = {
1616
Mode: 'Blitz',
17+
Friend: false,
18+
Foe: false,
1719
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
1820
SelectedSetup: AERData.turnordersetups['fourPlayers'].variations['default'],
1921
}
@@ -31,6 +33,8 @@ describe('TurnOrder | Configuration | reducer', () => {
3133
it('should handle SET_MODE', () => {
3234
const expected = {
3335
Mode: 'Maelstrom',
36+
Friend: false,
37+
Foe: false,
3438
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
3539
SelectedSetup:
3640
AERData.turnordersetups['fourPlayers'].variations['default'],
@@ -41,9 +45,41 @@ describe('TurnOrder | Configuration | reducer', () => {
4145
expect(getModel(result)).toEqual(expected)
4246
})
4347

48+
it('should handle SET_FRIEND', () => {
49+
const expected = {
50+
Mode: 'Blitz',
51+
Friend: true,
52+
Foe: false,
53+
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
54+
SelectedSetup:
55+
AERData.turnordersetups['fourPlayers'].variations['default'],
56+
}
57+
58+
const result = Reducer(mockConfiguration, actions.setFriend(true))
59+
60+
expect(getModel(result)).toEqual(expected)
61+
})
62+
63+
it('should handle SET_FOE', () => {
64+
const expected = {
65+
Mode: 'Blitz',
66+
Friend: false,
67+
Foe: true,
68+
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
69+
SelectedSetup:
70+
AERData.turnordersetups['fourPlayers'].variations['default'],
71+
}
72+
73+
const result = Reducer(mockConfiguration, actions.setFoe(true))
74+
75+
expect(getModel(result)).toEqual(expected)
76+
})
77+
4478
it('should handle SELECT_PLAYER_COUNT', () => {
4579
const expected = {
4680
Mode: 'Blitz',
81+
Friend: false,
82+
Foe: false,
4783
SelectedPlayerCount: AERData.turnordersetups['twoPlayers'],
4884
SelectedSetup:
4985
AERData.turnordersetups['twoPlayers'].variations['default'],
@@ -60,6 +96,8 @@ describe('TurnOrder | Configuration | reducer', () => {
6096
it('should handle SELECT_PLAYER_COUNT when player count is undefined', () => {
6197
const expected = {
6298
Mode: 'Blitz',
99+
Friend: false,
100+
Foe: false,
63101
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
64102
SelectedSetup:
65103
AERData.turnordersetups['fourPlayers'].variations['default'],
@@ -77,6 +115,8 @@ describe('TurnOrder | Configuration | reducer', () => {
77115
it('should handle SELECT_SETUP', () => {
78116
const expected = {
79117
Mode: 'Blitz',
118+
Friend: false,
119+
Foe: false,
80120
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
81121
SelectedSetup:
82122
AERData.turnordersetups['fourPlayers'].variations['splitPlayers'],
@@ -93,6 +133,8 @@ describe('TurnOrder | Configuration | reducer', () => {
93133
it('should handle SELECT_SETUP when setup does not exist for player count', () => {
94134
const expected = {
95135
Mode: 'Blitz',
136+
Friend: false,
137+
Foe: false,
96138
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
97139
SelectedSetup:
98140
AERData.turnordersetups['fourPlayers'].variations['default'],

src/Redux/Store/TurnOrder/Configuration/__test__/selectors.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@ import AERData from 'aer-data/src/index'
22

33
import {
44
ModeStateSlice,
5+
FriendStateSlice,
6+
FoeStateSlice,
57
SelectedPlayerCountStateSlice,
68
SelectedSetupStateSlice,
79
} from '../types'
810

911
import { selectors } from 'Redux/Store/TurnOrder/Configuration/selectors'
1012

1113
const mockConfiguration: ModeStateSlice &
14+
FriendStateSlice &
15+
FoeStateSlice &
1216
SelectedPlayerCountStateSlice &
1317
SelectedSetupStateSlice = {
1418
TurnOrder: {
1519
Configuration: {
1620
Mode: 'Blitz',
21+
Friend: false,
22+
Foe: false,
1723
SelectedPlayerCount: AERData.turnordersetups['fourPlayers'],
1824
SelectedSetup:
1925
AERData.turnordersetups['fourPlayers'].variations['default'],
@@ -103,6 +109,46 @@ describe('TurnOrder | Configuration | selectors', () => {
103109
expect(result).toEqual(expected)
104110
})
105111

112+
it('should add friend card with getConfiguration()', () => {
113+
const expected = {
114+
id: 'default',
115+
name: 'Default',
116+
turnOrderCards: [
117+
AERData.turnordercards['player1-1'],
118+
AERData.turnordercards['player2-1'],
119+
AERData.turnordercards['player3-1'],
120+
AERData.turnordercards['player4-1'],
121+
AERData.turnordercards['blitz'],
122+
AERData.turnordercards['nemesis-2'],
123+
AERData.turnordercards['friend'],
124+
],
125+
}
126+
127+
const result = selectors.getConfiguration({TurnOrder: {Configuration: {...mockConfiguration.TurnOrder.Configuration, Friend: true}}})
128+
129+
expect(result).toEqual(expected)
130+
})
131+
132+
it('should add foe card with getConfiguration()', () => {
133+
const expected = {
134+
id: 'default',
135+
name: 'Default',
136+
turnOrderCards: [
137+
AERData.turnordercards['player1-1'],
138+
AERData.turnordercards['player2-1'],
139+
AERData.turnordercards['player3-1'],
140+
AERData.turnordercards['player4-1'],
141+
AERData.turnordercards['blitz'],
142+
AERData.turnordercards['nemesis-2'],
143+
AERData.turnordercards['foe'],
144+
],
145+
}
146+
147+
const result = selectors.getConfiguration({TurnOrder: {Configuration: {...mockConfiguration.TurnOrder.Configuration, Foe: true}}})
148+
149+
expect(result).toEqual(expected)
150+
})
151+
106152
it('should get the available cards with getAvailableCards()', () => {
107153
const expected = [
108154
AERData.turnordercards['player1-1'],

src/Redux/Store/TurnOrder/Configuration/actions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { ActionTypes } from './types'
77
export const actions = {
88
noOp: () => createAction('@@REDUX_LOOP/ENFORCE_DEFAULT_HANDLING'),
99
setMode: (mode: types.Mode) => createAction(ActionTypes.SET_MODE, mode),
10+
setFriend: (friend: boolean) => createAction(ActionTypes.SET_FRIEND, friend),
11+
setFoe: (foe: boolean) => createAction(ActionTypes.SET_FOE, foe),
1012
selectPlayerCount: (playerCountId: types.PlayerCountId) =>
1113
createAction(ActionTypes.SELECT_PLAYER_COUNT, playerCountId),
1214
selectSetup: (setupId: types.TurnorderSetupVariationId) =>

src/Redux/Store/TurnOrder/Configuration/helpers.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ const newStateWithDBWrite = (newState: State) => {
1919
)
2020
}
2121

22-
const adjustSetup = (
23-
mode: types.Mode,
24-
setup: types.ITurnOrderSetup
25-
): types.ITurnOrderSetup => {
22+
const baseSetup = (mode: types.Mode, setup: types.ITurnOrderSetup): types.ITurnOrderSetup => {
2623
switch (mode) {
2724
case 'Maelstrom': {
2825
return {
@@ -98,9 +95,25 @@ const adjustSetup = (
9895

9996
case 'Default':
10097
default: {
101-
return setup
98+
return {...setup}
10299
}
103100
}
104101
}
105102

103+
const adjustSetup = (
104+
mode: types.Mode,
105+
friend: boolean,
106+
foe: boolean,
107+
setup: types.ITurnOrderSetup
108+
): types.ITurnOrderSetup => {
109+
const rawSetup = baseSetup(mode, setup);
110+
if (friend) {
111+
rawSetup.turnOrderCards = [...rawSetup.turnOrderCards, AERData.turnordercards['friend']]
112+
}
113+
if (foe) {
114+
rawSetup.turnOrderCards = [...rawSetup.turnOrderCards, AERData.turnordercards['foe']]
115+
}
116+
return rawSetup
117+
}
118+
106119
export { newStateWithDBWrite, adjustSetup }

src/Redux/Store/TurnOrder/Configuration/reducer.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import * as reducerHelpers from './reducerHelpers'
99

1010
export const initialState: State = {
1111
Mode: INITIAL_MODE,
12+
Friend: false,
13+
Foe: false,
1214
SelectedPlayerCount: INITIAL_PLAYER_SETUP,
1315
SelectedSetup: INITIAL_VARIATION,
1416
}
@@ -19,6 +21,14 @@ export const Reducer = (state: State = initialState, action: Action) => {
1921
return reducerHelpers.setMode(state, action)
2022
}
2123

24+
case ActionTypes.SET_FRIEND: {
25+
return reducerHelpers.setFriend(state, action)
26+
}
27+
28+
case ActionTypes.SET_FOE: {
29+
return reducerHelpers.setFoe(state, action)
30+
}
31+
2232
case ActionTypes.SELECT_PLAYER_COUNT: {
2333
return reducerHelpers.selectPlayerCount(state, action)
2434
}

src/Redux/Store/TurnOrder/Configuration/reducerHelpers/setMode.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,19 @@ export const setMode = (
99
const newState = { ...state, Mode: action.payload }
1010
return newStateWithDBWrite(newState)
1111
}
12+
13+
export const setFriend = (
14+
state: State,
15+
action: ReturnType<typeof actions.setFriend>
16+
) => {
17+
const newState = { ...state, Friend: action.payload }
18+
return newStateWithDBWrite(newState)
19+
}
20+
21+
export const setFoe = (
22+
state: State,
23+
action: ReturnType<typeof actions.setFoe>
24+
) => {
25+
const newState = { ...state, Foe: action.payload }
26+
return newStateWithDBWrite(newState)
27+
}

0 commit comments

Comments
 (0)