Skip to content

Commit 65f2576

Browse files
authored
Merge pull request #51 from nolleto/fix-shuffle-color-node-11
Fix shuffle color for node 11
2 parents 86286d1 + e79752b commit 65f2576

File tree

5 files changed

+33
-34
lines changed

5 files changed

+33
-34
lines changed

__mocks__/shuffle-array.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = jest.fn(array => array);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"redux-thunk": "^2.1.0",
6262
"remove-accents": "^0.4.2",
6363
"reselect": "^4.0.0",
64+
"shuffle-array": "^1.0.1",
6465
"sugarss": "^2.0.0",
6566
"uuid": "^3.3.2",
6667
"webpack": "^4.41.0",

src/utils/colors.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { sort, isEmpty } from 'ramda';
1+
import { isEmpty } from 'ramda';
2+
import shuffle from 'shuffle-array';
23

34
export const COLORS = [
45
'#D84315',
@@ -25,13 +26,11 @@ export const COLORS = [
2526
'#C2185B',
2627
];
2728

28-
const shuffle = sort(() => Math.random() - 0.5);
29-
3029
const createRandomColorBuilder = () => {
3130
let list = [];
3231
return () => {
3332
if (isEmpty(list)) {
34-
list = shuffle(COLORS);
33+
list = shuffle([...COLORS]);
3534
}
3635
return list.shift();
3736
};

src/utils/colors.test.js

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
11
import { times } from 'ramda';
2-
import { COLORS, getRandomColor } from './colors';
2+
import shuffle from 'shuffle-array';
3+
import { getRandomColor } from './colors';
34

45
describe('Colors Utils', () => {
56
describe('getRandomColor', () => {
6-
beforeAll(() => {
7-
jest.spyOn(Math, 'random').mockReturnValue(0.5);
8-
});
7+
describe('When getting the first color', () => {
8+
it('returns "#D84315"', () => {
9+
expect(getRandomColor()).toBe('#D84315');
10+
});
911

10-
afterAll(() => {
11-
Math.random.mockRestore();
12+
it('calls shuffle method', () => {
13+
expect(shuffle).toHaveBeenCalledTimes(1);
14+
});
1215
});
1316

14-
it('returns "#388E3C" on the first time', () => {
15-
expect(getRandomColor()).toBe('#388E3C');
16-
});
17+
describe('When getting the second color', () => {
18+
it('returns "#BF360C"', () => {
19+
expect(getRandomColor()).toBe('#BF360C');
20+
});
1721

18-
it('returns "#D84315" on the second time', () => {
19-
expect(getRandomColor()).toBe('#D84315');
22+
it('does not call shuffle method', () => {
23+
expect(shuffle).toHaveBeenCalledTimes(1);
24+
});
2025
});
2126

22-
it('returns "#388E3C" on the twenty first time', () => {
23-
times(getRandomColor, COLORS.length - 2);
24-
expect(getRandomColor()).toBe('#388E3C');
27+
describe('When getting the 23˚ color', () => {
28+
beforeEach(() => {
29+
times(getRandomColor, 21);
30+
});
31+
32+
it('calls shuffle method', () => {
33+
expect(shuffle).toHaveBeenCalledTimes(2);
34+
});
2535
});
2636
});
2737
});

yarn.lock

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,6 @@ acorn@^6.0.1, acorn@^6.0.7:
11271127
acorn@^6.2.1:
11281128
version "6.3.0"
11291129
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
1130-
integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==
11311130

11321131
airbnb-prop-types@^2.13.2:
11331132
version "2.13.2"
@@ -1552,7 +1551,6 @@ [email protected]:
15521551
bluebird@^3.5.5:
15531552
version "3.7.0"
15541553
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf"
1555-
integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==
15561554

15571555
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
15581556
version "4.11.8"
@@ -1730,7 +1728,6 @@ [email protected]:
17301728
cacache@^12.0.2:
17311729
version "12.0.3"
17321730
resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
1733-
integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==
17341731
dependencies:
17351732
bluebird "^3.5.5"
17361733
chownr "^1.1.1"
@@ -1905,7 +1902,6 @@ chownr@^1.1.1:
19051902
chrome-trace-event@^1.0.2:
19061903
version "1.0.2"
19071904
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
1908-
integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
19091905
dependencies:
19101906
tslib "^1.9.0"
19111907

@@ -2040,7 +2036,6 @@ commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@~2.20.0:
20402036
commander@^2.20.0:
20412037
version "2.20.1"
20422038
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9"
2043-
integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==
20442039

20452040
commander@~2.19.0:
20462041
version "2.19.0"
@@ -4080,7 +4075,6 @@ [email protected]:
40804075
infer-owner@^1.0.3:
40814076
version "1.0.4"
40824077
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
4083-
integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
40844078

40854079
inflight@^1.0.4:
40864080
version "1.0.6"
@@ -5080,7 +5074,6 @@ load-json-file@^4.0.0:
50805074
loader-runner@^2.4.0:
50815075
version "2.4.0"
50825076
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
5083-
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
50845077

50855078
loader-utils@^0.2.16:
50865079
version "0.2.17"
@@ -5613,7 +5606,6 @@ node-int64@^0.4.0:
56135606
node-libs-browser@^2.2.1:
56145607
version "2.2.1"
56155608
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
5616-
integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
56175609
dependencies:
56185610
assert "^1.1.1"
56195611
browserify-zlib "^0.2.0"
@@ -6120,7 +6112,6 @@ [email protected]:
61206112
61216113
version "0.0.1"
61226114
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
6123-
integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
61246115

61256116
path-case@^2.1.0:
61266117
version "2.1.1"
@@ -7515,6 +7506,10 @@ shellwords@^0.1.1:
75157506
version "0.1.1"
75167507
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
75177508

7509+
shuffle-array@^1.0.1:
7510+
version "1.0.1"
7511+
resolved "https://registry.yarnpkg.com/shuffle-array/-/shuffle-array-1.0.1.tgz#c4ff3cfe74d16f93730592301b25e6577b12898b"
7512+
75187513
signal-exit@^3.0.0, signal-exit@^3.0.2:
75197514
version "3.0.2"
75207515
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -7620,7 +7615,6 @@ source-map-support@^0.5.6:
76207615
source-map-support@~0.5.12:
76217616
version "0.5.13"
76227617
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
7623-
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
76247618
dependencies:
76257619
buffer-from "^1.0.0"
76267620
source-map "^0.6.0"
@@ -7995,7 +7989,6 @@ tar@^4:
79957989
terser-webpack-plugin@^1.4.1:
79967990
version "1.4.1"
79977991
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4"
7998-
integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==
79997992
dependencies:
80007993
cacache "^12.0.2"
80017994
find-cache-dir "^2.1.0"
@@ -8010,7 +8003,6 @@ terser-webpack-plugin@^1.4.1:
80108003
terser@^4.1.2:
80118004
version "4.3.7"
80128005
resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.7.tgz#9dafb4a6730868608c9c7af96d44182f4107b29f"
8013-
integrity sha512-rJFxzWIzJdgiOwYIPJHu6L3hDegEYJj2cHuKcngMraUfhMXGDEbok9Tqjw7yxzrU4IagvG74uTEKdiqeG6T7bg==
80148006
dependencies:
80158007
commander "^2.20.0"
80168008
source-map "~0.6.1"
@@ -8404,7 +8396,6 @@ [email protected]:
84048396
vm-browserify@^1.0.1:
84058397
version "1.1.0"
84068398
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
8407-
integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
84088399

84098400
w3c-hr-time@^1.0.1:
84108401
version "1.0.1"
@@ -8441,7 +8432,6 @@ warning@^3.0.0:
84418432
watchpack@^1.6.0:
84428433
version "1.6.0"
84438434
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
8444-
integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
84458435
dependencies:
84468436
chokidar "^2.0.2"
84478437
graceful-fs "^4.1.2"
@@ -8540,15 +8530,13 @@ webpack-sources@^1.1.0:
85408530
webpack-sources@^1.4.0, webpack-sources@^1.4.1:
85418531
version "1.4.3"
85428532
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
8543-
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
85448533
dependencies:
85458534
source-list-map "^2.0.0"
85468535
source-map "~0.6.1"
85478536

85488537
webpack@^4.41.0:
85498538
version "4.41.0"
85508539
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b"
8551-
integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g==
85528540
dependencies:
85538541
"@webassemblyjs/ast" "1.8.5"
85548542
"@webassemblyjs/helper-module-context" "1.8.5"

0 commit comments

Comments
 (0)