Adding actions and reducer tests
continuous-integration/drone/push Build is passing Details

master
Arthur VALIN 2 years ago
parent 8b59694c79
commit 0d6a700c8b

Binary file not shown.

@ -1,7 +1,16 @@
{ {
"ExpandedNodes": [ "ExpandedNodes": [
"" "",
"\\src",
"\\src\\assets",
"\\src\\components",
"\\src\\navigation",
"\\src\\redux",
"\\src\\redux\\actions",
"\\src\\redux\\reducers",
"\\src\\redux\\thunks",
"\\src\\storage"
], ],
"SelectedNode": "\\node_modules", "SelectedNode": "\\src\\navigation\\TabBar.tsx",
"PreviewInSolutionExplorer": false "PreviewInSolutionExplorer": false
} }

Binary file not shown.

27601
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -6,21 +6,27 @@
"start": "expo start", "start": "expo start",
"android": "expo start --android", "android": "expo start --android",
"ios": "expo start --ios", "ios": "expo start --ios",
"web": "expo start --web" "web": "expo start --web",
"test": "jest"
}, },
"dependencies": { "dependencies": {
"@benjeau/react-native-draw": "^0.8.3", "@benjeau/react-native-draw": "^0.8.3",
"@jest/globals": "^29.5.0",
"@react-native-async-storage/async-storage": "~1.17.3",
"@react-native-community/slider": "4.2.4", "@react-native-community/slider": "4.2.4",
"@react-navigation/bottom-tabs": "^6.5.4", "@react-navigation/bottom-tabs": "^6.5.4",
"@react-navigation/native": "^6.1.3", "@react-navigation/native": "^6.1.3",
"@react-navigation/stack": "^6.3.12", "@react-navigation/stack": "^6.3.12",
"@reduxjs/toolkit": "^1.9.2", "@reduxjs/toolkit": "^1.9.2",
"@shopify/react-native-skia": "0.1.157", "@shopify/react-native-skia": "0.1.157",
"@types/jest": "^29.5.0",
"expo": "~47.0.12", "expo": "~47.0.12",
"expo-2d-context": "^0.0.3", "expo-2d-context": "^0.0.3",
"expo-av": "~13.0.2", "expo-av": "~13.0.2",
"expo-cli": "^6.3.0", "expo-cli": "^6.3.0",
"expo-status-bar": "~1.4.2", "expo-status-bar": "~1.4.2",
"jest": "^26.6.3",
"jest-expo": "^48.0.2",
"react": "18.1.0", "react": "18.1.0",
"react-dom": "18.1.0", "react-dom": "18.1.0",
"react-native": "0.70.5", "react-native": "0.70.5",
@ -32,8 +38,7 @@
"react-native-web": "~0.18.9", "react-native-web": "~0.18.9",
"react-redux": "^8.0.5", "react-redux": "^8.0.5",
"redux": "^4.2.1", "redux": "^4.2.1",
"rn-perfect-sketch-canvas": "^0.3.0", "rn-perfect-sketch-canvas": "^0.3.0"
"@react-native-async-storage/async-storage": "~1.17.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.12.9", "@babel/core": "^7.12.9",

@ -0,0 +1,47 @@
import { Kanji } from "../model/kanji";
import { setSelectedKanji } from "../redux/actions/setSelectedKanji";
import { initKanjiListByGrade, KanjiListByGrade } from "../model/kanjiListByGrades";
import { setKanjis } from "../redux/actions/setKanjis";
import { setPlaygroundList } from "../redux/actions/setPlaygroundList";
describe("test actions", () => {
it('should create an action with SET_SELECTED_KANJI type', () => {
const payload = new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}]);
const expectation = {
type: 'SET_SELECTED_KANJI',
payload: payload.toObject(),
};
expect(setSelectedKanji(payload)).toEqual(expectation);
});
it('should create an action with SET_KANJIS type', () => {
const payload: KanjiListByGrade = initKanjiListByGrade();
const expectation = {
type: 'SET_KANJIS',
payload: payload,
};
expect(setKanjis(payload)).toEqual(expectation);
});
it('should create an action with SET_PLAYGROUND_LIST type', () => {
const payload: Kanji[] = [
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}]),
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}])
];
const expectation = {
type: 'SET_PLAYGROUND_LIST',
payload: payload,
};
expect(setPlaygroundList(payload)).toEqual(expectation);
});
});

@ -0,0 +1,74 @@
import { Kanji } from "../model/kanji";
import { initKanjiListByGrade, KanjiListByGrade } from "../model/kanjiListByGrades";
import kanjiReducer from "../redux/reducers/kanjiReducer";
describe('test reducer', () => {
let initialState = {
kanjis: initKanjiListByGrade(),
selectedKanji: null,
playgroundList: []
}
it('should return initial state', () => {
expect(kanjiReducer(undefined, {})).toEqual(initialState);
});
it('should handle SET_SELECTED_KANJI', () => {
const kanji = new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}]);
expect(
kanjiReducer(initialState, {
type: 'SET_SELECTED_KANJI',
payload: kanji
})
).toEqual({
kanjis: initKanjiListByGrade(),
selectedKanji: kanji,
playgroundList: []
});
});
it('should handle SET_KANJIS', () => {
const kanjis: KanjiListByGrade = initKanjiListByGrade();
kanjis["Grade 1"] = [
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}]),
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}])];
expect(
kanjiReducer(initialState, {
type: 'SET_KANJIS',
payload: kanjis
})
).toEqual({
kanjis: kanjis,
selectedKanji: null,
playgroundList: []
});
});
it('should handle SET_PLAYGROUND_LIST', () => {
const kanjis = [
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}]),
new Kanji("訪", "visit", "", "", 11, "ホウ", "おとずれる", { character: "", position: "" }, [{
english: "visit", japanese: "訪ねる(たずねる)"
}])];
expect(
kanjiReducer(initialState, {
type: 'SET_PLAYGROUND_LIST',
payload: kanjis
})
).toEqual({
kanjis: initKanjiListByGrade(),
selectedKanji: null,
playgroundList: kanjis
});
});
});
Loading…
Cancel
Save