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

Commit 7618d13

Browse files
authored
Merge pull request #14 from Yadro/my-day
WIP My day
2 parents 71eac5c + dfb67d6 commit 7618d13

27 files changed

+652
-155
lines changed

package.json

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"postinstall": "node -r @babel/register .erb/scripts/CheckNativeDep.js && electron-builder install-app-deps && yarn cross-env NODE_ENV=development webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.babel.js && opencollective-postinstall && yarn-deduplicate yarn.lock",
1414
"start": "node -r @babel/register ./.erb/scripts/CheckPortInUse.js && cross-env yarn start:renderer",
1515
"start:main": "cross-env NODE_ENV=development electron -r ./.erb/scripts/BabelRegister ./src/main.dev.ts",
16-
"start:renderer": "cross-env NODE_ENV=development webpack serve --config ./.erb/configs/webpack.config.renderer.dev.babel.js"
16+
"start:renderer": "cross-env NODE_ENV=development webpack serve --config ./.erb/configs/webpack.config.renderer.dev.babel.js",
17+
"test": "jest"
1718
},
1819
"lint-staged": {
1920
"*.{js,jsx,ts,tsx}": [
@@ -112,6 +113,27 @@
112113
"hot",
113114
"reload"
114115
],
116+
"jest": {
117+
"testURL": "http://localhost/",
118+
"moduleNameMapper": {
119+
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/.erb/mocks/fileMock.js",
120+
"\\.(css|less|sass|scss)$": "identity-obj-proxy"
121+
},
122+
"moduleFileExtensions": [
123+
"js",
124+
"jsx",
125+
"ts",
126+
"tsx",
127+
"json"
128+
],
129+
"moduleDirectories": [
130+
"node_modules",
131+
"src/node_modules"
132+
],
133+
"setupFiles": [
134+
"./.erb/scripts/CheckBuildsExist.js"
135+
]
136+
},
115137
"devDependencies": {
116138
"@babel/core": "^7.12.9",
117139
"@babel/plugin-proposal-class-properties": "^7.12.1",
@@ -139,6 +161,7 @@
139161
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
140162
"@teamsupercell/typings-for-css-modules-loader": "^2.4.0",
141163
"@types/history": "4.7.6",
164+
"@types/jest": "^26.0.24",
142165
"@types/node": "14.14.10",
143166
"@types/react": "^16.9.44",
144167
"@types/react-dom": "^16.9.9",
@@ -147,6 +170,7 @@
147170
"@typescript-eslint/eslint-plugin": "^4.8.1",
148171
"@typescript-eslint/parser": "^4.8.1",
149172
"babel-eslint": "^10.1.0",
173+
"babel-jest": "^26.1.0",
150174
"babel-loader": "^8.2.2",
151175
"babel-plugin-dev-expression": "^0.2.2",
152176
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
@@ -172,13 +196,16 @@
172196
"eslint-import-resolver-webpack": "^0.13.0",
173197
"eslint-plugin-compat": "^3.8.0",
174198
"eslint-plugin-import": "^2.22.0",
199+
"eslint-plugin-jest": "^24.1.3",
175200
"eslint-plugin-jsx-a11y": "6.4.1",
176201
"eslint-plugin-prettier": "^3.1.4",
177202
"eslint-plugin-promise": "^4.2.1",
178203
"eslint-plugin-react": "^7.20.6",
179204
"eslint-plugin-react-hooks": "^4.0.8",
180205
"file-loader": "^6.0.0",
181206
"husky": "^4.2.5",
207+
"identity-obj-proxy": "^3.0.0",
208+
"jest": "^27.0.6",
182209
"lint-staged": "^10.2.11",
183210
"mini-css-extract-plugin": "^1.3.1",
184211
"node-sass": "^5.0.0",
@@ -189,7 +216,7 @@
189216
"sass-loader": "^10.1.0",
190217
"style-loader": "^2.0.0",
191218
"terser-webpack-plugin": "^5.0.3",
192-
"typescript": "^4.0.5",
219+
"typescript": "^4.3.5",
193220
"url-loader": "^4.1.0",
194221
"webpack": "^5.5.1",
195222
"webpack-bundle-analyzer": "^4.1.0",

src/base/AbstractModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default abstract class AbstractModel {
33
return Object.keys(this);
44
}
55

6-
protected load<T extends any = any>(data: T) {
6+
protected load<T extends Object = Object>(data: T) {
77
if (data) {
88
this.getAttributes().forEach((attribute) => {
99
if (data.hasOwnProperty(attribute)) {

src/base/TreeModelHelper.ts

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const Features = {
2+
myDay: false,
3+
};
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import TreeModelHelper from './TreeModelHelper';
2+
import TaskFactory from '../modules/tasks/TaskFactory';
3+
import { IJsonTaskModel } from '../modules/tasks/models/TaskModel';
4+
import { TasksByProject } from '../modules/tasks/models/TasksByProject';
5+
import { ITreeItemWithParent } from '../types/ITreeItem';
6+
7+
describe('TreeModelHelper', () => {
8+
let testTasks: TasksByProject | undefined;
9+
beforeEach(() => {
10+
const factory = new TaskFactory();
11+
/* Structure:
12+
-task1
13+
--task1-1
14+
---task-1-1-1
15+
-task2
16+
--task21
17+
--task22
18+
*/
19+
const task111: Partial<IJsonTaskModel> = {
20+
key: '111',
21+
title: 'task1-1-1',
22+
parent: null,
23+
children: [],
24+
};
25+
const task11: Partial<IJsonTaskModel> = {
26+
key: '11',
27+
title: 'task1-1',
28+
parent: null,
29+
children: [task111 as IJsonTaskModel],
30+
};
31+
const task1: Partial<IJsonTaskModel> = {
32+
key: '1',
33+
title: 'task1',
34+
parent: null,
35+
children: [task11 as IJsonTaskModel],
36+
};
37+
38+
task111.parent = task11 as IJsonTaskModel;
39+
task11.parent = task1 as IJsonTaskModel;
40+
41+
const task21: Partial<IJsonTaskModel> = {
42+
key: '21',
43+
title: 'task21',
44+
parent: null,
45+
children: [],
46+
};
47+
const task22: Partial<IJsonTaskModel> = {
48+
key: '22',
49+
title: 'task22',
50+
parent: null,
51+
children: [],
52+
};
53+
const task2: Partial<IJsonTaskModel> = {
54+
key: '2',
55+
title: 'task2',
56+
parent: null,
57+
children: [task21, task22] as IJsonTaskModel[],
58+
};
59+
task21.parent = task2 as IJsonTaskModel;
60+
task22.parent = task2 as IJsonTaskModel;
61+
62+
testTasks = factory.createTasks(({
63+
proj: [task1, task2],
64+
} as unknown) as TasksByProject);
65+
});
66+
67+
test('getPathToNode #1', () => {
68+
if (!testTasks) {
69+
throw new Error();
70+
}
71+
const task111 = testTasks.proj[0].children[0].children[0];
72+
expect(TreeModelHelper.getPathToNode(task111)).toStrictEqual([
73+
'1',
74+
'11',
75+
'111',
76+
]);
77+
});
78+
79+
test('getPathToNode #2', () => {
80+
if (!testTasks) {
81+
throw new Error();
82+
}
83+
const task22 = testTasks.proj[1].children[0];
84+
expect(TreeModelHelper.getPathToNode(task22)).toStrictEqual(['2', '21']);
85+
});
86+
87+
test('');
88+
});

0 commit comments

Comments
 (0)