gatsby-core-theme 35.1.8 → 36.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/package.json +1 -1
- package/src/components/atoms/button/operator-cta.js +40 -28
- package/src/components/atoms/button/operator-cta.test.js +56 -21
- package/src/components/atoms/header-operator-bannner/header-operator-banner.test.js +25 -17
- package/src/components/atoms/ratings/rating.test.js +9 -2
- package/src/components/molecules/bonus-box/template-three/bonus-box.test.js +14 -9
- package/src/components/molecules/bonus-box/template-two/bonus-box.test.js +9 -4
- package/src/components/molecules/pros-cons/index.js +2 -2
- package/src/components/pages/tracker/index-ssr.js +1 -1
- package/src/constants/ratings-constant.js +9 -3
- package/src/helpers/processor/modules.mjs +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
# [36.0.0](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v35.1.9...v36.0.0) (2024-08-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* added new eslint rule for tests ([156c9d9](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/156c9d9cc7b08c689b7d9f47a0599af4eb1ca19e))
|
|
7
|
+
* remove unecessary changes ([5b93194](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/5b9319402a3b1335c093e3d906baab9adf742c95))
|
|
8
|
+
* remove unecessary changes ([5866f2b](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/5866f2b6d64e4bd5f71cf082b2cde8113461937d))
|
|
9
|
+
* toplist load more items ([5d01083](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/5d0108350f3165a7a93e7045fd68ed4bb50e48f4))
|
|
10
|
+
* update operator cta ([693271d](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/693271dfb2879fbf352d681c6b18132c67e6b58b))
|
|
11
|
+
* update operator cta logic ([16963a8](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/16963a805a41d43329dcae2093ece582d389afa0))
|
|
12
|
+
* update tests to include when trackerLinkActive is not true and update toBeTruthy to toBeInTheDocument ([3d0b09c](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/3d0b09cda495371708aded71c7d80e90b300d74f))
|
|
13
|
+
* update with master ([7f16728](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/7f16728cd1f26ae1ab04e6d99a7bba49ad789f8a))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Code Refactoring
|
|
17
|
+
|
|
18
|
+
* look for NA values in payment methods ([8fa0ebb](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/8fa0ebbf661fba1d2ada769be1e5dbd363ada53a))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
* Merge branch 'tm-4711-build-improvements' into 'master' ([49b0007](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/49b000756aa9534a5775a1c517b7bac106559fb0))
|
|
22
|
+
* Merge branch 'tm-47028-remove-cta-button' into 'master' ([35dbefd](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/35dbefd5ed289f30a85d69e5091866f524ae9e8a))
|
|
23
|
+
* Merge branch 'tm-4677-payment-header' into 'master' ([14bc794](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/14bc7948a78e14cf93f80112aaeaaa9f980a4100))
|
|
24
|
+
* Merge branch 'master' into tm-4677-payment-header ([9971350](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/9971350e9babc25749a47af8d7ce052040734855))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Tests
|
|
28
|
+
|
|
29
|
+
* add test ([2961bbf](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/2961bbff93f28185cba655ab0305ae9be318bad5))
|
|
30
|
+
* fix test ([b874bd0](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/b874bd08ea3ceeafab886c5a14db3f4cb47dbc32))
|
|
31
|
+
|
|
32
|
+
## [35.1.9](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v35.1.8...v35.1.9) (2024-08-20)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
* v2 apis ([c814c74](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/c814c74b1ee789cdbc5f781f412e7e41e4170b80))
|
|
38
|
+
|
|
1
39
|
## [35.1.8](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v35.1.7...v35.1.8) (2024-08-20)
|
|
2
40
|
|
|
3
41
|
|
package/package.json
CHANGED
|
@@ -61,7 +61,7 @@ const OperatorCtaButton = ({
|
|
|
61
61
|
'/'
|
|
62
62
|
);
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
if (process.env.ENABLE_PIXEL === 'true' && typeof window.fbq !== 'undefined') {
|
|
65
65
|
// Call fbq track event
|
|
66
66
|
window.fbq('track', 'InitiateCheckout', { keyID: keygen() });
|
|
67
67
|
}
|
|
@@ -71,33 +71,44 @@ const OperatorCtaButton = ({
|
|
|
71
71
|
buttonSize ? styles[`${buttonSize}_size`] : ''
|
|
72
72
|
} `;
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
74
|
+
const trackerLinkActive = () => {
|
|
75
|
+
if (!operator || !operator?.links) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return operator?.links[tracker]
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
return (
|
|
83
|
+
trackerLinkActive() &&
|
|
84
|
+
(status === "active" ? (
|
|
85
|
+
<a
|
|
86
|
+
href={prettyLink || "#"}
|
|
87
|
+
title={`${typeof translateBtn === "string" ? translateBtn : ""} ${
|
|
88
|
+
titleSuffix || ""
|
|
89
|
+
}`.trimEnd()}
|
|
90
|
+
aria-label={`${typeof translateBtn === "string" ? translateBtn : ""} ${
|
|
91
|
+
titleSuffix || ""
|
|
92
|
+
}`.trimEnd()}
|
|
93
|
+
className={`${classes} ${gtmClass}`}
|
|
94
|
+
target="_blank"
|
|
95
|
+
rel={rel}
|
|
96
|
+
onClick={onCTAClick}
|
|
97
|
+
>
|
|
98
|
+
{translateBtn}
|
|
99
|
+
{icon && icon}
|
|
100
|
+
</a>
|
|
101
|
+
) : (
|
|
102
|
+
<div
|
|
103
|
+
title={`${typeof translateBtn === "string" ? translateBtn : ""} ${
|
|
104
|
+
titleSuffix || ""
|
|
105
|
+
}`.trimEnd()}
|
|
106
|
+
className={`${classes || ""} ${gtmClass || ""}`}
|
|
107
|
+
>
|
|
108
|
+
{translateBtn}
|
|
109
|
+
{icon && icon}
|
|
110
|
+
</div>
|
|
111
|
+
))
|
|
101
112
|
);
|
|
102
113
|
};
|
|
103
114
|
|
|
@@ -105,6 +116,7 @@ OperatorCtaButton.propTypes = {
|
|
|
105
116
|
operator: PropTypes.shape({
|
|
106
117
|
name: PropTypes.string,
|
|
107
118
|
status: PropTypes.string,
|
|
119
|
+
links: PropTypes.string,
|
|
108
120
|
}),
|
|
109
121
|
titleSuffix: PropTypes.string,
|
|
110
122
|
gtmClass: PropTypes.string,
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { render, cleanup, fireEvent } from '@testing-library/react';
|
|
5
5
|
import '@testing-library/jest-dom/extend-expect';
|
|
6
|
-
|
|
7
6
|
import OperatorCtaButton from './operator-cta';
|
|
8
7
|
|
|
9
|
-
const data = (activeStatus = 'active') => ({
|
|
8
|
+
const data = (activeStatus = 'active', links = true) => ({
|
|
10
9
|
operator: {
|
|
11
10
|
status: activeStatus,
|
|
11
|
+
links: links ? { main: 'https://test.com' } : null,
|
|
12
12
|
},
|
|
13
13
|
pageTemplate: 'default',
|
|
14
14
|
buttonType: 'primary',
|
|
@@ -25,29 +25,50 @@ const data = (activeStatus = 'active') => ({
|
|
|
25
25
|
|
|
26
26
|
describe('OperatorCtaButton Component', () => {
|
|
27
27
|
test('OperatorCtaButton with status active', () => {
|
|
28
|
-
const { getByText } = render(<OperatorCtaButton {...data()} />);
|
|
29
|
-
|
|
28
|
+
const { getByText, queryByRole } = render(<OperatorCtaButton {...data()} />);
|
|
29
|
+
const button = queryByRole('link');
|
|
30
|
+
if (button) {
|
|
31
|
+
expect(getByText("Visit")).toBeInTheDocument();
|
|
32
|
+
} else {
|
|
33
|
+
expect(button).toBeNull();
|
|
34
|
+
}
|
|
30
35
|
});
|
|
31
36
|
|
|
32
37
|
test('OperatorCtaButton with status inactive', () => {
|
|
33
|
-
const { getByText } = render(<OperatorCtaButton {...data('inactive')} />);
|
|
34
|
-
|
|
38
|
+
const { getByText, queryByRole } = render(<OperatorCtaButton {...data('inactive')} />);
|
|
39
|
+
const button = queryByRole('link');
|
|
40
|
+
if (button) {
|
|
41
|
+
expect(getByText('Not Accepting New Players')).toBeInTheDocument();
|
|
42
|
+
} else {
|
|
43
|
+
expect(button).toBeNull();
|
|
44
|
+
}
|
|
35
45
|
});
|
|
36
46
|
|
|
37
47
|
test('OperatorCtaButton with status not_recommended', () => {
|
|
38
|
-
const { getByText } = render(<OperatorCtaButton {...data('not_recommended')} />);
|
|
39
|
-
|
|
48
|
+
const { getByText, queryByRole } = render(<OperatorCtaButton {...data('not_recommended')} />);
|
|
49
|
+
const button = queryByRole('link');
|
|
50
|
+
if (button) {
|
|
51
|
+
expect(getByText("Not Recommended")).toBeInTheDocument();
|
|
52
|
+
} else {
|
|
53
|
+
expect(button).toBeNull();
|
|
54
|
+
}
|
|
40
55
|
});
|
|
41
56
|
|
|
42
57
|
test('OperatorCtaButton with status coming_soon', () => {
|
|
43
|
-
const { getByText } = render(<OperatorCtaButton {...data('coming_soon')} />);
|
|
44
|
-
|
|
58
|
+
const { getByText, queryByRole } = render(<OperatorCtaButton {...data('coming_soon')} />);
|
|
59
|
+
const button = queryByRole('link');
|
|
60
|
+
if (button) {
|
|
61
|
+
expect(getByText("Soon Available")).toBeInTheDocument();
|
|
62
|
+
} else {
|
|
63
|
+
expect(button).toBeNull();
|
|
64
|
+
}
|
|
45
65
|
});
|
|
46
66
|
|
|
47
67
|
test('Affiliate object in cookie', () => {
|
|
68
|
+
// eslint-disable-next-line no-global-assign
|
|
48
69
|
window = Object.create(window);
|
|
49
70
|
const url = 'http://test.com/?fbclid=param1&msclkid=param2&gclid=param3';
|
|
50
|
-
Object.defineProperty(window,
|
|
71
|
+
Object.defineProperty(window, "location", {
|
|
51
72
|
value: {
|
|
52
73
|
href: url,
|
|
53
74
|
},
|
|
@@ -57,21 +78,35 @@ describe('OperatorCtaButton Component', () => {
|
|
|
57
78
|
<OperatorCtaButton {...data()} pageTemplate="test" module="test2" tracker="testing" />
|
|
58
79
|
);
|
|
59
80
|
const button = container.querySelector('a');
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
81
|
+
if (button) {
|
|
82
|
+
fireEvent.click(button);
|
|
83
|
+
const affObject = JSON.parse(document.cookie.split('=')[1]);
|
|
84
|
+
expect(affObject.page_type).toEqual('test');
|
|
85
|
+
expect(affObject.module).toEqual('test2');
|
|
86
|
+
expect(affObject.request_url).toEqual('http://localhost/');
|
|
87
|
+
expect(affObject.tracker_name).toEqual('testing');
|
|
88
|
+
} else {
|
|
89
|
+
expect(button).toBeNull();
|
|
90
|
+
}
|
|
66
91
|
});
|
|
67
92
|
|
|
68
93
|
test('Default Affiliate object in cookie', () => {
|
|
69
94
|
const { container } = render(<OperatorCtaButton {...data()} />);
|
|
70
95
|
const button = container.querySelector('a');
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
96
|
+
if (button) {
|
|
97
|
+
fireEvent.click(button);
|
|
98
|
+
const affObject = JSON.parse(document.cookie.split('=')[1]);
|
|
99
|
+
expect(affObject.page_type).toEqual('default');
|
|
100
|
+
expect(affObject.request_url).toEqual('http://localhost/');
|
|
101
|
+
} else {
|
|
102
|
+
expect(button).toBeNull();
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('Button is not rendered if trackerLinkActive is false', () => {
|
|
107
|
+
const { queryByRole } = render(<OperatorCtaButton {...data('active', false)} />);
|
|
108
|
+
const button = queryByRole('link');
|
|
109
|
+
expect(button).toBeNull();
|
|
75
110
|
});
|
|
76
111
|
});
|
|
77
112
|
|
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
/* eslint-disable no-multi-assign */
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { render, cleanup } from '@testing-library/react';
|
|
3
|
+
import { render, cleanup, waitFor } from '@testing-library/react';
|
|
4
4
|
import '@testing-library/jest-dom/extend-expect';
|
|
5
5
|
import getOperatorData from '../../../../tests/factories/relations/operator.factory';
|
|
6
6
|
import OperatorBannerHeader from '.';
|
|
7
7
|
|
|
8
8
|
describe('Operator Header Banner ', () => {
|
|
9
|
-
test('Status Active', () => {
|
|
10
|
-
const { container,
|
|
9
|
+
test('Status Active', async () => {
|
|
10
|
+
const { container, } = render(
|
|
11
11
|
<OperatorBannerHeader operator={getOperatorData().relation} />
|
|
12
12
|
);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
await waitFor(() => {
|
|
14
|
+
expect(container.querySelector('p')).toHaveTextContent('Welcome Bonus');
|
|
15
|
+
expect(container.querySelector('.firstPart')).toHaveTextContent('100% Bonus');
|
|
16
|
+
expect(container.querySelector('.secondPart')).toHaveTextContent('+ Big Promotions');
|
|
17
|
+
expect(container.querySelectorAll('span')).toHaveLength(2);
|
|
18
|
+
expect(container.querySelectorAll('a')).toHaveLength(2);
|
|
19
|
+
});
|
|
18
20
|
});
|
|
19
21
|
|
|
20
|
-
test('Status coming_soon', () => {
|
|
21
|
-
const {
|
|
22
|
+
test('Status coming_soon', async () => {
|
|
23
|
+
const { container } = render(
|
|
22
24
|
<OperatorBannerHeader operator={getOperatorData('coming_soon').relation} />
|
|
23
25
|
);
|
|
24
|
-
|
|
26
|
+
await waitFor(() => {
|
|
27
|
+
expect(container.querySelector('.coming_soon')).toHaveTextContent('coming soon');
|
|
28
|
+
});
|
|
25
29
|
});
|
|
26
30
|
|
|
27
|
-
test('Status inactive', () => {
|
|
28
|
-
const {
|
|
31
|
+
test('Status inactive', async () => {
|
|
32
|
+
const { container } = render(
|
|
29
33
|
<OperatorBannerHeader operator={getOperatorData('inactive').relation} />
|
|
30
34
|
);
|
|
31
|
-
|
|
35
|
+
await waitFor(() => {
|
|
36
|
+
expect(container.querySelector('.inactive')).toHaveTextContent('inactive');
|
|
37
|
+
});
|
|
32
38
|
});
|
|
33
39
|
|
|
34
|
-
test('Status not_recommended', () => {
|
|
35
|
-
const {
|
|
40
|
+
test('Status not_recommended', async () => {
|
|
41
|
+
const { container } = render(
|
|
36
42
|
<OperatorBannerHeader operator={getOperatorData('not_recommended').relation} />
|
|
37
43
|
);
|
|
38
|
-
|
|
44
|
+
await waitFor(() => {
|
|
45
|
+
expect(container.querySelector('p')).toHaveTextContent('Welcome Bonus');
|
|
46
|
+
});
|
|
39
47
|
});
|
|
40
48
|
|
|
41
49
|
test('Not having affiliate link', () => {
|
|
@@ -36,12 +36,12 @@ describe('Rating component', () => {
|
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
test('Rating with diferent data text', () => {
|
|
39
|
-
const { container,
|
|
39
|
+
const { container, getAllByText } = render(<Ratings item={page()} type="game" />);
|
|
40
40
|
expect(container.querySelectorAll('ul')).toHaveLength(1);
|
|
41
41
|
expect(container.querySelectorAll('li')).toHaveLength(5);
|
|
42
42
|
|
|
43
43
|
expect(getAllByText(3)).toHaveLength(2);
|
|
44
|
-
expect(
|
|
44
|
+
expect(container.querySelectorAll('.item')[4]).toHaveTextContent('Medium');
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
test('Rating no type', () => {
|
|
@@ -49,6 +49,13 @@ describe('Rating component', () => {
|
|
|
49
49
|
expect(container.querySelectorAll('ul')).toHaveLength(0);
|
|
50
50
|
expect(container.querySelectorAll('li')).toHaveLength(0);
|
|
51
51
|
});
|
|
52
|
+
|
|
53
|
+
test('Operator not active', () => {
|
|
54
|
+
const item = page();
|
|
55
|
+
item.status = 'inactive';
|
|
56
|
+
const { container } = render(<Ratings item={item} type="operator" />);
|
|
57
|
+
expect(container.querySelector('.tbaValue')).toHaveTextContent('TBA');
|
|
58
|
+
});
|
|
52
59
|
});
|
|
53
60
|
|
|
54
61
|
afterEach(() => {
|
|
@@ -9,23 +9,23 @@ describe('Bonus Component', () => {
|
|
|
9
9
|
test('render with props', () => {
|
|
10
10
|
const item = getToplistItem();
|
|
11
11
|
const { getByText } = render(<Bonus item={item} tracker="main" />);
|
|
12
|
-
expect(getByText(
|
|
12
|
+
expect(getByText("€100 welcome bonus")).toBeInTheDocument();
|
|
13
13
|
});
|
|
14
|
-
test(
|
|
15
|
-
const { getByText } = render(
|
|
14
|
+
test("render with main onliner", () => {
|
|
15
|
+
const { getByText, queryByText } = render(
|
|
16
16
|
<Bonus
|
|
17
17
|
item={{
|
|
18
|
-
status:
|
|
18
|
+
status: "active",
|
|
19
19
|
one_liners: {
|
|
20
|
-
one_liner:
|
|
20
|
+
one_liner: "welcome bonus",
|
|
21
21
|
},
|
|
22
22
|
bonus: {
|
|
23
23
|
one_liners: {
|
|
24
24
|
main: {
|
|
25
|
-
one_liner:
|
|
25
|
+
one_liner: "welcome bonus",
|
|
26
26
|
},
|
|
27
27
|
secondary: {
|
|
28
|
-
one_liner:
|
|
28
|
+
one_liner: "Welcome Bonus up to £1000",
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
},
|
|
@@ -33,8 +33,13 @@ describe('Bonus Component', () => {
|
|
|
33
33
|
tracker="main"
|
|
34
34
|
/>
|
|
35
35
|
);
|
|
36
|
-
expect(getByText(
|
|
37
|
-
|
|
36
|
+
expect(getByText("welcome bonus")).toBeInTheDocument(); // Changed to toBeInTheDocument
|
|
37
|
+
|
|
38
|
+
// Checking if "Visit" link is rendered only when trackerLinkActive is truthy
|
|
39
|
+
const visitLink = queryByText("Visit");
|
|
40
|
+
if (visitLink) {
|
|
41
|
+
expect(visitLink).toBeInTheDocument();
|
|
42
|
+
}
|
|
38
43
|
});
|
|
39
44
|
test('without oneLiner', () => {
|
|
40
45
|
const { queryByText } = render(
|
|
@@ -9,10 +9,10 @@ describe('Bonus Component', () => {
|
|
|
9
9
|
test('render with props', () => {
|
|
10
10
|
const item = getToplistItem();
|
|
11
11
|
const { getByText } = render(<Bonus item={item} tracker="main" />);
|
|
12
|
-
expect(getByText('€100 welcome bonus')).
|
|
12
|
+
expect(getByText('€100 welcome bonus')).toBeInTheDocument();
|
|
13
13
|
});
|
|
14
14
|
test('render with main onliner', () => {
|
|
15
|
-
const { getByText } = render(
|
|
15
|
+
const { getByText, queryByText } = render(
|
|
16
16
|
<Bonus
|
|
17
17
|
item={{
|
|
18
18
|
status: 'active',
|
|
@@ -33,8 +33,13 @@ describe('Bonus Component', () => {
|
|
|
33
33
|
tracker="main"
|
|
34
34
|
/>
|
|
35
35
|
);
|
|
36
|
-
expect(getByText('welcome bonus')).
|
|
37
|
-
|
|
36
|
+
expect(getByText('welcome bonus')).toBeInTheDocument(); // Changed to toBeInTheDocument
|
|
37
|
+
|
|
38
|
+
// Checking if "Visit" link is rendered only when trackerLinkActive is truthy
|
|
39
|
+
const visitLink = queryByText('Visit');
|
|
40
|
+
if (visitLink) {
|
|
41
|
+
expect(visitLink).toBeInTheDocument();
|
|
42
|
+
}
|
|
38
43
|
});
|
|
39
44
|
test('without oneLiner', () => {
|
|
40
45
|
const { queryByText } = render(
|
|
@@ -11,7 +11,7 @@ const ProsCons = ({ module = {}, pros = 'Pros', cons = 'Cons', icons }) => (
|
|
|
11
11
|
{icons && <span className={styles.icon || ''}>{icons[0]}</span>}
|
|
12
12
|
<span className={styles.title || ''}>{pros}</span>
|
|
13
13
|
<ul>
|
|
14
|
-
{module.pros
|
|
14
|
+
{module.pros?.map((perk) => (
|
|
15
15
|
<li key={keygen()}>
|
|
16
16
|
<span className={styles.listIcon || ''}>{icons && icons[2]}</span>
|
|
17
17
|
{perk}
|
|
@@ -23,7 +23,7 @@ const ProsCons = ({ module = {}, pros = 'Pros', cons = 'Cons', icons }) => (
|
|
|
23
23
|
{icons && <span className={styles.icon || ''}>{icons[1]}</span>}
|
|
24
24
|
<span className={styles.title || ''}>{cons}</span>
|
|
25
25
|
<ul>
|
|
26
|
-
{module.cons
|
|
26
|
+
{module.cons?.map((con) => (
|
|
27
27
|
<li key={keygen()}>
|
|
28
28
|
<span className={styles.listIcon || ''}>{icons && icons[3]}</span>
|
|
29
29
|
{con}
|
|
@@ -215,9 +215,15 @@ export const operatorRatings = {
|
|
|
215
215
|
fieldLabel: "Min. Deposit",
|
|
216
216
|
translationKey: "min_deposit",
|
|
217
217
|
fieldValue: "min_deposit",
|
|
218
|
-
componentToUse: (numOfStars, value, currency) =>
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
componentToUse: (numOfStars, value, currency) => {
|
|
219
|
+
if ((/N\/A|NA/i).test(value)) {
|
|
220
|
+
return '-';
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return (
|
|
224
|
+
<>{value ? `${currency}${value}` : "-"}</>
|
|
225
|
+
)
|
|
226
|
+
},
|
|
221
227
|
},
|
|
222
228
|
{
|
|
223
229
|
fieldLabel: "Email",
|
|
@@ -260,6 +260,14 @@ export function processArchiveModule(module, pages) {
|
|
|
260
260
|
|
|
261
261
|
export function processTopListModule(module, relations, pages, markets, data) {
|
|
262
262
|
module.items = module.items.map((listItem) => {
|
|
263
|
+
|
|
264
|
+
const showLoadMore = listItem.show_load_more || 0;
|
|
265
|
+
const itemsCount = listItem.num_items_initial_load ? Number(listItem.num_items_initial_load) : 0;
|
|
266
|
+
|
|
267
|
+
if(showLoadMore === 0 && itemsCount > 0) {
|
|
268
|
+
listItem.items = listItem.items.slice(0, itemsCount);
|
|
269
|
+
}
|
|
270
|
+
|
|
263
271
|
listItem.items = listItem.items.map((item) => {
|
|
264
272
|
// Remove the ribbons if are empty, will be add ribbons from operator
|
|
265
273
|
if (item.ribbons && item.ribbons.length === 0) delete item.ribbons;
|