diff --git a/frontend/src/second-edition/components/Kepzettsegek2E.test.tsx b/frontend/src/second-edition/components/Kepzettsegek2E.test.tsx new file mode 100644 index 0000000..3535bcb --- /dev/null +++ b/frontend/src/second-edition/components/Kepzettsegek2E.test.tsx @@ -0,0 +1,126 @@ +import React from "react"; +import {render} from "@testing-library/react"; +import {configureStore} from "@reduxjs/toolkit"; +import {Provider} from "react-redux"; +import KarakterKepzettsegek from "./Kepzettsegek2E"; +import userReducer from "../../shared/domain-models/userSlice"; +import characterReducer, {setCharacter} from "../domain-models/characterSlice"; +import {DefaultKarakter, Karakter2E} from "../domain-models/karakter2E"; +import {Osztaly2E} from "../domain-models/osztaly2E"; +import {Tulajdonsag2E} from "../domain-models/tulajdonsag2E"; + +function createStore() { + return configureStore({ + reducer: { + user: userReducer, + character2E: characterReducer, + }, + }); +} + +describe("KarakterKepzettsegek", () => { + it("shows one more kepzettseg selector when INT modifier increases from level-up", () => { + const karakter: Karakter2E = { + ...DefaultKarakter, + szint: 4, + tulajdonsagok: { + ...DefaultKarakter.tulajdonsagok, + t_int: 17, + }, + szintlepesek: [ + { osztaly: Osztaly2E.Harcos, HProll: 10 }, + { osztaly: Osztaly2E.Harcos, HProll: 7 }, + { osztaly: Osztaly2E.Harcos, HProll: 6 }, + { osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia }, + ], + tolvajKepzettsegek: [], + varazslatok: [], + }; + + const store = createStore(); + store.dispatch(setCharacter(karakter)); + + const sut = render( + + + + ); + + const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]'); + expect(selectors).toHaveLength(7); + }); + + it("shows one more kepzettseg selector when INT modifier increases at level 8", () => { + const karakter: Karakter2E = { + ...DefaultKarakter, + szint: 8, + tulajdonsagok: { + ...DefaultKarakter.tulajdonsagok, + t_int: 14, + }, + szintlepesek: [ + { osztaly: Osztaly2E.Harcos, HProll: 10 }, + { osztaly: Osztaly2E.Harcos, HProll: 7 }, + { osztaly: Osztaly2E.Harcos, HProll: 6 }, + { osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Ero }, + { osztaly: Osztaly2E.Harcos, HProll: 4 }, + { osztaly: Osztaly2E.Harcos, HProll: 9 }, + { osztaly: Osztaly2E.Harcos, HProll: 5 }, + { osztaly: Osztaly2E.Harcos, HProll: 6, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia }, + ], + tolvajKepzettsegek: [], + varazslatok: [], + }; + + const store = createStore(); + store.dispatch(setCharacter(karakter)); + + const sut = render( + + + + ); + + const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]'); + expect(selectors).toHaveLength(6); + }); + + it("shows one more kepzettseg selector when INT modifier increases at level 12", () => { + const karakter: Karakter2E = { + ...DefaultKarakter, + szint: 12, + tulajdonsagok: { + ...DefaultKarakter.tulajdonsagok, + t_int: 17, + }, + szintlepesek: [ + { osztaly: Osztaly2E.Harcos, HProll: 10 }, + { osztaly: Osztaly2E.Harcos, HProll: 7 }, + { osztaly: Osztaly2E.Harcos, HProll: 6 }, + { osztaly: Osztaly2E.Harcos, HProll: 8, tulajdonsagNoveles: Tulajdonsag2E.Ero }, + { osztaly: Osztaly2E.Harcos, HProll: 4 }, + { osztaly: Osztaly2E.Harcos, HProll: 9 }, + { osztaly: Osztaly2E.Harcos, HProll: 5 }, + { osztaly: Osztaly2E.Harcos, HProll: 6, tulajdonsagNoveles: Tulajdonsag2E.Egeszseg }, + { osztaly: Osztaly2E.Harcos, HProll: 3 }, + { osztaly: Osztaly2E.Harcos, HProll: 7 }, + { osztaly: Osztaly2E.Harcos, HProll: 5 }, + { osztaly: Osztaly2E.Harcos, HProll: 4, tulajdonsagNoveles: Tulajdonsag2E.Intelligencia }, + ], + tolvajKepzettsegek: [], + varazslatok: [], + }; + + const store = createStore(); + store.dispatch(setCharacter(karakter)); + + const sut = render( + + + + ); + + const selectors = sut.container.querySelectorAll('[data-testid^="kepzettseg-"]'); + expect(selectors).toHaveLength(7); + }); +}); diff --git a/frontend/src/second-edition/components/Kepzettsegek2E.tsx b/frontend/src/second-edition/components/Kepzettsegek2E.tsx index 2dfea75..baf2f61 100644 --- a/frontend/src/second-edition/components/Kepzettsegek2E.tsx +++ b/frontend/src/second-edition/components/Kepzettsegek2E.tsx @@ -13,7 +13,7 @@ import {arraySetN} from "../../util"; import {useDispatch, useSelector} from "react-redux"; import {AppDispatch, RootState} from "../../store"; import {characterSelector, setKepzettsegek, setTolvajKepzettsegek} from "../domain-models/characterSlice"; -import {TulajdonsagokFajjal} from "../domain-models/faj2E"; +import {TulajdonsagokTotal} from "../domain-models/tulajdonsag2E"; function InternalKepzettsegekSelector(props: { title: string, @@ -70,8 +70,8 @@ function KarakterKepzettsegek () { const karakter = useSelector.withTypes()(characterSelector); const dispatch = useDispatch.withTypes()(); - const tulajdonsagokFajjal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj) - const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, karakter.faj) + const tulajdonsagokTotal = TulajdonsagokTotal(karakter) + const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokTotal.t_int, karakter.faj) const kepzettsegek = karakter.kepzettsegek const fajError = karakter.kepzettsegFajError const osztalyError = karakter.kepzettsegOsztalyError diff --git a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts index 37a0e93..027fe18 100644 --- a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts +++ b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts @@ -13,7 +13,7 @@ function availableKezpettsegListFajjal(faj: Faj2E, ...osztalyok: Osztaly2E[]): K } export function GetNumberOfKepzettsegek(t_int: number, faj: Faj2E, max: number = 11) { - //max = 3 + 1 + 3 + 5 = 12 // 3 base, 1 human, 3 from max ability modifier, 4 from Thief +1 at 9th level + //max = 3 + 1 + 3 + 4 + 2 = 13 // 3 base, 1 human, 3 from max ability modifier, 4 from Thief +1 at 5th and +1 at 9th level let numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj2E.Ember ? 1 : 0) if (numberOfKepzettseg < 1) {