Skip to content

Commit ddedc83

Browse files
author
Andrey Marchenko
authored
Fixed regression bug when copy dont copy class (#53)
* Fixed regression bug when copy dont copy class * Bump version * Update test libs to last version * Delete run test in nodejs 6. Because this version old
1 parent 122b9ff commit ddedc83

File tree

7 files changed

+46
-40
lines changed

7 files changed

+46
-40
lines changed

Diff for: .travis.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
language: node_js
22
node_js:
3-
- "6"
43
- "8"
54
- "10"
6-
script:
5+
script:
76
- npm run test:ci
8-

Diff for: jest.config.js

+7-13
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
11
// eslint-disable-next-line import/no-commonjs
2+
23
module.exports = {
34
timers: 'fake',
5+
preset: 'ts-jest',
46
testURL: 'http://localhost/',
5-
transform: {
6-
'^.+\\.tsx?$': 'ts-jest',
7-
'^.+\\.jsx?$': 'babel-jest'
8-
},
97
globals: {
108
'ts-jest': {
11-
useBabelrc: true,
12-
tsConfigFile: 'tsconfig.json'
9+
tsConfig: {
10+
esModuleInterop: true
11+
}
1312
}
1413
},
1514
testMatch: [
16-
'**/__tests__/*.+(ts|tsx|js|jsx)'
17-
],
18-
moduleFileExtensions: [
19-
'ts',
20-
'tsx',
21-
'js'
15+
'**/__tests__/*.+(ts|tsx|js|jsx)',
2216
]
23-
};
17+
}

Diff for: package.json

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tinkoff/utils",
3-
"version": "2.1.1",
3+
"version": "2.1.2",
44
"author": "Tinkoff team",
55
"scripts": {
66
"release": "node ./releaseUtils/index.js",
@@ -29,9 +29,8 @@
2929
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
3030
"@babel/preset-env": "^7.0.0",
3131
"@babel/preset-react": "^7.0.0",
32-
"@types/jest": "^23.3.1",
32+
"@types/jest": "^24.0.18",
3333
"babel-core": "^7.0.0-bridge.0",
34-
"babel-jest": "^23.4.2",
3534
"babel-plugin-transform-es2015-modules-simple-commonjs": "^0.3.0",
3635
"benchmark": "^2.1.4",
3736
"chalk": "^2.4.1",
@@ -44,15 +43,15 @@
4443
"fs-extra": "^6.0.1",
4544
"gh-pages": "^1.2.0",
4645
"inquirer": "^5.2.0",
47-
"jest": "^23.0.0",
48-
"jsdom": "^11.12.0",
46+
"jest": "^24.9.0",
47+
"jsdom": "^15.1.1",
4948
"ora": "^2.1.0",
5049
"prettier": "^1.16.4",
5150
"react": "^16.9.0",
5251
"react-is": "^16.9.0",
5352
"recursive-readdir-sync": "^1.0.6",
54-
"ts-jest": "^23.1.3",
55-
"typescript": "^3.0.1",
53+
"ts-jest": "^24.1.0",
54+
"typescript": "^3.6.3",
5655
"walker": "^1.0.7"
5756
},
5857
"peerDependencies": {

Diff for: src/__tests__/clone.ts

+12
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,16 @@ describe('utils/clone', () => {
4747
expect(result.elem).toBe(elem);
4848
expect(result.memElem).toBe(memElem);
4949
});
50+
51+
it('should copy class', () => {
52+
class User {
53+
constructor(public firstName: string, public lastName: string) { }
54+
}
55+
56+
const obj = { user: new User('Tom', 'John') }
57+
const result = clone(obj);
58+
59+
expect(result).toEqual(obj);
60+
expect(result.user).not.toBe(obj.user);
61+
})
5062
});

Diff for: src/clone.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import type from './type';
22
import mapObj from './object/map';
33
import mapArr from './array/map';
4-
import isPlainObject from './is/plainObject';
4+
import isReactElement from './is/reactElement';
5+
import isReactComponent from './is/reactComponent';
56

67
interface Clone {
78
<T>(x: T): T;
@@ -33,10 +34,12 @@ const cloneRegExp = (pattern: RegExp) =>
3334
const clone = (x) => {
3435
switch (type(x)) {
3536
case 'Object':
36-
if (isPlainObject(x)) {
37+
// Skip clone react object
38+
if (isReactComponent(x) || isReactElement(x)) {
39+
break;
40+
} else {
3741
return mapObj(clone, x);
3842
}
39-
break;
4043
case 'Array':
4144
return mapArr(clone, x);
4245
case 'Date':

Diff for: src/is/__tests__/reactComponent.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
const { createElement, PureComponent, memo, lazy } = require('react');
1+
describe('utils/is/reactComponent', () => {
2+
const { createElement, PureComponent, memo, lazy } = require('react');
23

3-
let mockReactIs;
4+
let mockReactIs;
45

5-
jest.mock('react-is', () => mockReactIs);
6+
jest.mock('react-is', () => mockReactIs);
67

7-
class Component extends PureComponent {}
8+
class Component extends PureComponent { }
89

9-
describe('utils/is/reactComponent', () => {
1010
beforeEach(() => {
1111
jest.resetModules();
1212
});
1313

1414
it('test', () => {
1515
mockReactIs = require.requireActual('react-is');
16-
const isReactComponent = require('../reactComponent');
16+
const isReactComponent = require('../reactComponent').default;
1717

1818
expect(isReactComponent({ test: 'i' })).toBe(false);
1919
expect(isReactComponent(createElement('i'))).toBe(false);
@@ -27,7 +27,7 @@ describe('utils/is/reactComponent', () => {
2727

2828
it('test when react-is not defined', () => {
2929
mockReactIs = null;
30-
const isReactComponent = require('../reactComponent');
30+
const isReactComponent = require('../reactComponent').default;
3131

3232
expect(isReactComponent({ test: 'i' })).toBe(false);
3333
expect(isReactComponent(createElement('i'))).toBe(true);

Diff for: src/is/__tests__/reactElement.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
const { createElement, PureComponent } = require('react');
1+
describe('utils/is/reactElement', () => {
2+
const { createElement, PureComponent } = require('react');
23

3-
let mockReactIs;
4+
let mockReactIs;
45

5-
jest.mock('react-is', () => mockReactIs);
6+
jest.mock('react-is', () => mockReactIs);
67

7-
class Component extends PureComponent {}
8+
class Component extends PureComponent { }
89

9-
describe('utils/is/reactElement', () => {
1010
beforeEach(() => {
1111
jest.resetModules();
1212
});
1313

1414
it('test', () => {
1515
mockReactIs = require.requireActual('react-is');
16-
const isReactElement = require('../reactElement');
16+
const isReactElement = require('../reactElement').default;
1717

1818
expect(isReactElement('test')).toBe(false);
1919
expect(isReactElement({})).toBe(false);
@@ -24,7 +24,7 @@ describe('utils/is/reactElement', () => {
2424

2525
it('test when is-react not defined', () => {
2626
mockReactIs = null;
27-
const isReactElement = require('../reactElement');
27+
const isReactElement = require('../reactElement').default;
2828

2929
expect(isReactElement('test')).toBe(false);
3030
expect(isReactElement({})).toBe(false);

0 commit comments

Comments
 (0)