gatsby-core-theme 41.1.5 → 41.1.6-beta.2
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 +25 -0
- package/gatsby-node.mjs +47 -40
- package/jest.config.js +1 -1
- package/package.json +1 -1
- package/src/components/atoms/admin/bar/preview/index.js +2 -2
- package/src/helpers/processor/index.mjs +18 -36
- package/src/helpers/processor/relations.mjs +5 -2
- package/src/helpers/processor/sports-relations.mjs +116 -0
- package/src/helpers/processor/sports.mjs +2 -137
- package/src/helpers/processor/sports.test.js +1 -176
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## [41.1.6-beta.2](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v41.1.6-beta.1...v41.1.6-beta.2) (2024-12-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* added featured with tournament pages] ([1408818](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/1408818727af95ee455a8f4e798e3c8e2b8a2c0f))
|
|
7
|
+
* conflict ([b83f852](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/b83f852cf17a78959e955b09b663c5c3858d74ea))
|
|
8
|
+
* preview button link for multimarket ([1024993](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/1024993c1577600649aae98884cea94450c9463d))
|
|
9
|
+
* preview button link for multimarket ([17487d1](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/17487d1601d093e2a21a17fbe77be7f3105e0451))
|
|
10
|
+
* preview button link for multimarket ([0020ba4](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/0020ba46ef3a0dcd7e37f044c4cc615e9fe6d57c))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
* Merge branch 'sports-data' into 'beta' ([e24e7e9](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/e24e7e97d10d5fe1b2eb4cf7cec8d6d5643d7d95))
|
|
14
|
+
|
|
15
|
+
## [41.1.6-beta.1](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v41.1.5...v41.1.6-beta.1) (2024-12-09)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* new sports data structure ([4e73685](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/4e736852d4ac25b7d6fa023a11f93eef0d521d2a))
|
|
21
|
+
* temp ([269a99a](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/269a99a414070223114d5aeeeab18e7ef250fbb8))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
* Merge branch 'sports-data' into 'beta' ([7d7b3e8](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/7d7b3e8c8ab6c8a2d38431e503d18352df3eb17b))
|
|
25
|
+
|
|
1
26
|
## [41.1.5](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v41.1.4...v41.1.5) (2024-12-06)
|
|
2
27
|
|
|
3
28
|
|
package/gatsby-node.mjs
CHANGED
|
@@ -302,11 +302,12 @@ export const createPages = async (
|
|
|
302
302
|
|
|
303
303
|
htmlSitemapPages = processSitemapPages(pages, processed.site_markets);
|
|
304
304
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
305
|
+
// TO REMOVE
|
|
306
|
+
// if (["rage_seo", "rage_ppc", "sports"].includes(siteGeneralData.type)) {
|
|
307
|
+
// sports = Object.keys(response.relations["sports_data"].sports).map(
|
|
308
|
+
// (key) => response.relations["sports_data"].sports[key]
|
|
309
|
+
// );
|
|
310
|
+
// }
|
|
310
311
|
|
|
311
312
|
// create robots.txt file
|
|
312
313
|
const robotsTxtContent = siteGeneralData.robots_txt
|
|
@@ -345,9 +346,10 @@ export const createPages = async (
|
|
|
345
346
|
return;
|
|
346
347
|
}
|
|
347
348
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
// TO REMOVE
|
|
350
|
+
// if (page.relation_type === "event" && !page.relation.event) {
|
|
351
|
+
// return;
|
|
352
|
+
// }
|
|
351
353
|
|
|
352
354
|
const template = templatesData[page.template_id];
|
|
353
355
|
const autogenerated = template && template.autogenerated_content;
|
|
@@ -412,40 +414,44 @@ export const createPages = async (
|
|
|
412
414
|
});
|
|
413
415
|
});
|
|
414
416
|
|
|
417
|
+
|
|
415
418
|
// Generating Affiliate Tracker Link
|
|
416
419
|
const pageTemplate = "tracker";
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
// TO REMOVE
|
|
423
|
+
// if (["rage_seo", "rage_ppc"].includes(siteGeneralData.type)) {
|
|
424
|
+
// Object.keys(
|
|
425
|
+
// (processed.relations &&
|
|
426
|
+
// processed.relations.sports_data &&
|
|
427
|
+
// processed.relations.sports_data.providers) ||
|
|
428
|
+
// {}
|
|
429
|
+
// ).forEach((providerId) => {
|
|
430
|
+
// const provider = processed.relations.sports_data.providers[providerId];
|
|
431
|
+
// const tracker = generateTrackerLink(provider, "main", true, pageTemplate);
|
|
432
|
+
// const trackerPageObject = {
|
|
433
|
+
// meta_title: "Tracker",
|
|
434
|
+
// template: pageTemplate,
|
|
435
|
+
// title: "Tracker",
|
|
436
|
+
// relation_type: "page",
|
|
437
|
+
// language: defaultLanguage,
|
|
438
|
+
// path: tracker,
|
|
439
|
+
// meta_robots: ["noindex", "nofollow"],
|
|
440
|
+
// };
|
|
441
|
+
// createPage({
|
|
442
|
+
// path: tracker,
|
|
443
|
+
// component: `${__dirname}/src/components/app.js`,
|
|
444
|
+
// context: {
|
|
445
|
+
// page: trackerPageObject,
|
|
446
|
+
// siteGeneralData,
|
|
447
|
+
// provider,
|
|
448
|
+
// isTracker: true,
|
|
449
|
+
// isLiveStreamProvider: true,
|
|
450
|
+
// meta_robots: ["noindex", "nofollow"],
|
|
451
|
+
// },
|
|
452
|
+
// });
|
|
453
|
+
// });
|
|
454
|
+
// }
|
|
449
455
|
|
|
450
456
|
// Creating Tracking links
|
|
451
457
|
Object.keys(operators || {}).forEach((operatorId) => {
|
|
@@ -620,6 +626,7 @@ export const sourceNodes = async ({
|
|
|
620
626
|
updated_at: page.updated_at,
|
|
621
627
|
market: page.market,
|
|
622
628
|
language: page.language,
|
|
629
|
+
type: page.type
|
|
623
630
|
};
|
|
624
631
|
|
|
625
632
|
const nodeMeta = {
|
package/jest.config.js
CHANGED
package/package.json
CHANGED
|
@@ -6,8 +6,8 @@ import styles from "./preview.module.scss";
|
|
|
6
6
|
|
|
7
7
|
const PreviewLink = ({ page, preview, activeMarket }) => {
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
let path = activeMarket && activeMarket.path_prefix ? page.path.replace(`${activeMarket.path_prefix}/`, '') : page.path;
|
|
10
|
+
path = activeMarket && page.path === `${activeMarket.path_prefix}` ? '/' : path;
|
|
11
11
|
|
|
12
12
|
return (
|
|
13
13
|
<li>
|
|
@@ -28,12 +28,8 @@ import {
|
|
|
28
28
|
addMultipleAuthorsToPage,
|
|
29
29
|
} from "./page.mjs";
|
|
30
30
|
|
|
31
|
-
import {
|
|
32
|
-
prepareSportsData,
|
|
33
|
-
addSportsDataToPage,
|
|
34
|
-
addExtraFieldsToShowcaseEvents,
|
|
35
|
-
} from "./sports.mjs";
|
|
36
31
|
import { processRelations } from "./relations.mjs";
|
|
32
|
+
import { processSportsRelations } from "./sports-relations.mjs";
|
|
37
33
|
import { zeroPadding } from "../schedule.mjs";
|
|
38
34
|
import { getRoundMinutes } from "../getters.mjs";
|
|
39
35
|
import { checkForInactiveOperatorToplist } from "../validateData.mjs";
|
|
@@ -346,9 +342,9 @@ export default {
|
|
|
346
342
|
}
|
|
347
343
|
});
|
|
348
344
|
|
|
349
|
-
rageSportType = ["rage_seo", "rage_ppc", "sports"].includes(
|
|
350
|
-
|
|
351
|
-
);
|
|
345
|
+
// rageSportType = ["rage_seo", "rage_ppc", "sports"].includes(
|
|
346
|
+
// generalData.type
|
|
347
|
+
// );
|
|
352
348
|
themeType = generalData.type ? generalData.type : null;
|
|
353
349
|
|
|
354
350
|
const searchEnabled =
|
|
@@ -357,13 +353,6 @@ export default {
|
|
|
357
353
|
? themeOptions.searchEnabled
|
|
358
354
|
: true;
|
|
359
355
|
|
|
360
|
-
// add sports data
|
|
361
|
-
if (rageSportType) {
|
|
362
|
-
// should be able to check for site type here (type: sport)
|
|
363
|
-
// assign providers to events, events to schedules etc..
|
|
364
|
-
sportsData = prepareSportsData(data.relations.sports_data);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
356
|
menus = data.menus;
|
|
368
357
|
|
|
369
358
|
// Menu changes when there is a path prefix configured on hercules
|
|
@@ -400,7 +389,7 @@ export default {
|
|
|
400
389
|
|
|
401
390
|
updatePlaceholders(page, generalData, translations);
|
|
402
391
|
|
|
403
|
-
//
|
|
392
|
+
// Set Affiliate relations
|
|
404
393
|
processRelations(
|
|
405
394
|
page,
|
|
406
395
|
pageType,
|
|
@@ -408,8 +397,19 @@ export default {
|
|
|
408
397
|
market,
|
|
409
398
|
data,
|
|
410
399
|
index,
|
|
411
|
-
pageType === "preview"
|
|
412
|
-
|
|
400
|
+
pageType === "preview"
|
|
401
|
+
);
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
// Set Sports relations
|
|
405
|
+
processSportsRelations(
|
|
406
|
+
page,
|
|
407
|
+
pageType,
|
|
408
|
+
transformedPages,
|
|
409
|
+
market,
|
|
410
|
+
data,
|
|
411
|
+
index,
|
|
412
|
+
pageType === "preview"
|
|
413
413
|
);
|
|
414
414
|
|
|
415
415
|
// Add multiple Page authors
|
|
@@ -474,24 +474,6 @@ export default {
|
|
|
474
474
|
responsibleGamingData;
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
-
// add sports data
|
|
478
|
-
if (rageSportType) {
|
|
479
|
-
// should be able to check for site type here (type: sport)
|
|
480
|
-
if (page.relation_type !== "operator") {
|
|
481
|
-
page.relation = addSportsDataToPage(sportsData, page, themeType);
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
if (pageType === "page" && page.relation.showcased_events) {
|
|
485
|
-
const eventPages = Object.values(transformedPages[market].event);
|
|
486
|
-
const showcasedEvents = page.relation.showcased_events;
|
|
487
|
-
|
|
488
|
-
page.relation.showcased_events = addExtraFieldsToShowcaseEvents(
|
|
489
|
-
eventPages,
|
|
490
|
-
showcasedEvents
|
|
491
|
-
);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
|
|
495
477
|
pagesMappedById[page.id] = page;
|
|
496
478
|
|
|
497
479
|
// add search data
|
|
@@ -15,13 +15,14 @@ export const processRelations = (
|
|
|
15
15
|
market,
|
|
16
16
|
data,
|
|
17
17
|
index,
|
|
18
|
-
isPreview
|
|
19
|
-
translations
|
|
18
|
+
isPreview
|
|
20
19
|
) => {
|
|
21
20
|
if (page.relation_type !== "page" && page.relation_id) {
|
|
21
|
+
|
|
22
22
|
const hasRelation =
|
|
23
23
|
data.relations[page.relation_type] &&
|
|
24
24
|
data.relations[page.relation_type].hasOwnProperty(page.relation_id);
|
|
25
|
+
|
|
25
26
|
transformedPages[market][isPreview ? "preview" : page.relation_type][
|
|
26
27
|
index
|
|
27
28
|
].relation = hasRelation
|
|
@@ -71,6 +72,8 @@ export const processRelations = (
|
|
|
71
72
|
}
|
|
72
73
|
};
|
|
73
74
|
|
|
75
|
+
|
|
76
|
+
|
|
74
77
|
function removeDomain(url) {
|
|
75
78
|
if (url) {
|
|
76
79
|
const domainRegex = /^https?:\/\/[^/]+/;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* eslint-disable no-case-declarations */
|
|
2
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
3
|
+
import loadash from "lodash/index.js";
|
|
4
|
+
|
|
5
|
+
const { cloneDeep } = loadash;
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
8
|
+
export const processSportsRelations = (
|
|
9
|
+
page,
|
|
10
|
+
pageType,
|
|
11
|
+
transformedPages,
|
|
12
|
+
market,
|
|
13
|
+
data,
|
|
14
|
+
index,
|
|
15
|
+
isPreview
|
|
16
|
+
) => {
|
|
17
|
+
let relation = {};
|
|
18
|
+
|
|
19
|
+
if (page.template === "homepage_sports") {
|
|
20
|
+
relation.teams = cloneDeep(data.relations.sports_data.teams);
|
|
21
|
+
relation.events = cloneDeep(data.relations.sports_data.events);
|
|
22
|
+
relation.schedule = cloneDeep(data.relations.sports_data.schedule);
|
|
23
|
+
relation.featured_events = cloneDeep(data.relations.sports_data.featured_events);
|
|
24
|
+
transformedPages[market][pageType][index].relation = relation;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
switch (page.relation_type) {
|
|
28
|
+
case "event":
|
|
29
|
+
if (transformedPages[market][pageType][index].relation_id) {
|
|
30
|
+
const event = cloneDeep(data.relations.events[page.relation_id]);
|
|
31
|
+
const tournament =
|
|
32
|
+
event && data.relations.tournaments[event.tournament?.id]
|
|
33
|
+
? cloneDeep(data.relations.tournaments[event.tournament?.id])
|
|
34
|
+
: null;
|
|
35
|
+
|
|
36
|
+
relation = {
|
|
37
|
+
event,
|
|
38
|
+
tournament,
|
|
39
|
+
teams: {
|
|
40
|
+
home_team:
|
|
41
|
+
event && data.relations.sports_data.teams[event.home_team?.id]
|
|
42
|
+
? cloneDeep(
|
|
43
|
+
data.relations.sports_data.teams[event.home_team?.id]
|
|
44
|
+
)
|
|
45
|
+
: null,
|
|
46
|
+
away_team:
|
|
47
|
+
event && data.relations.sports_data.teams[event.away_team?.id]
|
|
48
|
+
? cloneDeep(
|
|
49
|
+
data.relations.sports_data.teams[event.away_team?.id]
|
|
50
|
+
)
|
|
51
|
+
: null,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
transformedPages[market][pageType][index].relation = relation;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
case "tournament":
|
|
59
|
+
const tournaments = [];
|
|
60
|
+
const tournamentIds = [];
|
|
61
|
+
|
|
62
|
+
if (
|
|
63
|
+
Array.isArray(transformedPages[market][pageType][index].relation_id)
|
|
64
|
+
) {
|
|
65
|
+
transformedPages[market][pageType][index].relation_id.map(
|
|
66
|
+
(tournament) => {
|
|
67
|
+
tournaments.push(cloneDeep(data.relations.tournaments[tournament]));
|
|
68
|
+
if (data.relations.tournaments[tournament]?.stage_id) {
|
|
69
|
+
tournamentIds.push(
|
|
70
|
+
data.relations.tournaments[tournament].stage_id
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
} else {
|
|
76
|
+
tournaments.push(
|
|
77
|
+
cloneDeep(
|
|
78
|
+
data.relations.tournaments[
|
|
79
|
+
transformedPages[market][pageType][index].relation_id
|
|
80
|
+
]
|
|
81
|
+
)
|
|
82
|
+
);
|
|
83
|
+
tournamentIds.push(
|
|
84
|
+
data.relations.tournaments[
|
|
85
|
+
transformedPages[market][pageType][index].relation_id
|
|
86
|
+
].stage_id
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Filter schedule tournaments
|
|
91
|
+
const schedule = cloneDeep(data.relations.sports_data.schedule);
|
|
92
|
+
if (schedule.soccer) {
|
|
93
|
+
Object.entries(schedule.soccer).forEach(([date, value]) => {
|
|
94
|
+
Object.entries(value.tournaments).forEach(([tournament, value]) => {
|
|
95
|
+
if (!tournamentIds.includes(value.stage_id)) {
|
|
96
|
+
delete schedule.soccer[date].tournaments[tournament];
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
if(Object.keys(schedule.soccer[date].tournaments).length === 0) {
|
|
101
|
+
delete schedule.soccer[date];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
relation.teams = cloneDeep(data.relations.sports_data.teams);
|
|
107
|
+
relation.events = cloneDeep(data.relations.sports_data.events);
|
|
108
|
+
relation.schedule = schedule;
|
|
109
|
+
relation.tournaments = tournaments;
|
|
110
|
+
relation.featured_events = cloneDeep(data.relations.sports_data.featured_events);
|
|
111
|
+
transformedPages[market][pageType][index].relation = relation;
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
1
2
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
3
|
import loadash from 'lodash/index.js';
|
|
3
4
|
import {
|
|
4
|
-
filterScheduleByTournaments,
|
|
5
|
-
filterScheduleByTeam,
|
|
6
5
|
filterScheduleByDate,
|
|
7
6
|
filterEvents,
|
|
8
|
-
findTournaments,
|
|
9
|
-
getSortedEvents,
|
|
10
7
|
} from '../schedule.mjs';
|
|
11
8
|
|
|
12
9
|
const { cloneDeep, intersectionWith, isEqual } = loadash;
|
|
@@ -77,136 +74,4 @@ export function prepareSportsData(sportsData) {
|
|
|
77
74
|
});
|
|
78
75
|
|
|
79
76
|
return sportsData;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export function addSportsDataToPage(sportsData, page, themeType) {
|
|
83
|
-
const pageType = page.template;
|
|
84
|
-
const relation = {};
|
|
85
|
-
// map providers object to an array
|
|
86
|
-
const providersArray = Object.keys(sportsData.providers).map((key) => {
|
|
87
|
-
sportsData.providers[key].id = key;
|
|
88
|
-
return sportsData.providers[key];
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
(pageType === 'sport' || pageType === 'live_stream_providers') &&
|
|
93
|
-
page.relation_id &&
|
|
94
|
-
sportsData.sports[page.relation_id]
|
|
95
|
-
) {
|
|
96
|
-
// active sport
|
|
97
|
-
const sport = sportsData.sports[page.relation_id].name;
|
|
98
|
-
relation.schedule = sportsData.schedule[sport] || null;
|
|
99
|
-
relation.featured_events = sportsData.featured_events[sport] || null;
|
|
100
|
-
relation.showcased_events = sportsData.showcased_events[sport] || null;
|
|
101
|
-
// filter providers by sport
|
|
102
|
-
relation.providers = providersArray.filter((provider) => provider.sports_data[sport] !== null);
|
|
103
|
-
relation.sport = sportsData.sports[page.relation_id];
|
|
104
|
-
}
|
|
105
|
-
// add event data to 'event' page type
|
|
106
|
-
if (pageType === 'event' && page.relation_id && sportsData.events[page.relation_id]) {
|
|
107
|
-
relation.event = sportsData.events[page.relation_id];
|
|
108
|
-
relation.sport = sportsData.sports[relation.event.sport.id];
|
|
109
|
-
}
|
|
110
|
-
// add providers to 'homepage' and 'provider_reviews' page type
|
|
111
|
-
if (pageType === 'homepage' || pageType === 'provider_reviews') {
|
|
112
|
-
relation.providers = providersArray;
|
|
113
|
-
}
|
|
114
|
-
// add a provider to 'provider review' page type
|
|
115
|
-
if (pageType === 'provider_review' && page.relation_id) {
|
|
116
|
-
relation.provider = sportsData.providers[page.relation_id];
|
|
117
|
-
}
|
|
118
|
-
// add all events schedule to 'live stream' page type
|
|
119
|
-
if (pageType === 'live_stream') {
|
|
120
|
-
relation.schedule = sportsData.schedule;
|
|
121
|
-
}
|
|
122
|
-
// rage-seo pages data
|
|
123
|
-
if (themeType === 'rage_seo' || themeType === 'sports') {
|
|
124
|
-
if (pageType === 'homepage' || pageType === 'default' || pageType === 'homepage_sports') {
|
|
125
|
-
relation.schedule = sportsData.schedule.soccer || null;
|
|
126
|
-
relation.featured_events = sportsData.featured_events.soccer || null;
|
|
127
|
-
relation.showcased_events = sportsData.showcased_events.soccer || null;
|
|
128
|
-
relation.tournaments = sportsData.tournaments;
|
|
129
|
-
}
|
|
130
|
-
if (pageType === 'live_stream') {
|
|
131
|
-
relation.schedule = sportsData.schedule.soccer || null;
|
|
132
|
-
relation.providers = providersArray.filter(
|
|
133
|
-
(provider) => provider.sports_data.soccer !== null
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
if (pageType === 'live_stream_providers') {
|
|
137
|
-
relation.providers = providersArray.filter(
|
|
138
|
-
(provider) => provider.sports_data.soccer !== null
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (pageType === 'team' && page.relation_id && sportsData.teams[page.relation_id]) {
|
|
143
|
-
relation.team = sportsData.teams[page.relation_id];
|
|
144
|
-
// closet team event
|
|
145
|
-
relation.event =
|
|
146
|
-
relation.team.events.length > 0 ? sportsData.events[relation.team.events[0]] : null;
|
|
147
|
-
relation.schedule = filterScheduleByTeam(
|
|
148
|
-
cloneDeep(sportsData.schedule.soccer),
|
|
149
|
-
relation.team.events
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (pageType === 'tournament' && page.relation_id) {
|
|
154
|
-
relation.tournaments = findTournaments(sportsData.tournaments, page.relation_id);
|
|
155
|
-
relation.schedule = filterScheduleByTournaments(
|
|
156
|
-
cloneDeep(sportsData.schedule.soccer),
|
|
157
|
-
page.relation_id
|
|
158
|
-
);
|
|
159
|
-
// eslint-disable-next-line prefer-destructuring
|
|
160
|
-
relation.event = getSortedEvents(relation.tournaments, sportsData.events)[0];
|
|
161
|
-
relation.featured_events = sportsData.featured_events.soccer || null;
|
|
162
|
-
// relation.events = findEvents(relation.tournaments, sportsData.events);
|
|
163
|
-
relation.providers = providersArray.filter(
|
|
164
|
-
(provider) => provider.sports_data.soccer !== null
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
if (pageType === 'event' && page.relation_id && sportsData.events[page.relation_id]) {
|
|
168
|
-
relation.event = sportsData.events[page.relation_id];
|
|
169
|
-
relation.tournament = relation.event.tournament;
|
|
170
|
-
relation.schedule = filterScheduleByTournaments(
|
|
171
|
-
cloneDeep(sportsData.schedule.soccer),
|
|
172
|
-
relation.tournament.id
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
if (pageType === 'team' || pageType === 'tournament' || pageType === 'event') {
|
|
176
|
-
const mainProviders = providersArray.filter(
|
|
177
|
-
(provider) => provider.sports_data.soccer !== null && provider.main === 1
|
|
178
|
-
);
|
|
179
|
-
relation.mainProviders = mainProviders;
|
|
180
|
-
const intersections =
|
|
181
|
-
(relation.event &&
|
|
182
|
-
intersectionWith(relation.event.providers, [relation.mainProviders[0]], isEqual)) ||
|
|
183
|
-
[];
|
|
184
|
-
relation.theEventIsStreamedByMainProvider = intersections.length;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if (pageType === 'leagues_list') {
|
|
188
|
-
relation.tournaments = sportsData.tournaments;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// add more
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (sportsData.sports) {
|
|
195
|
-
relation.sports = Object.keys(sportsData.sports).map((key) => sportsData.sports[key]);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// etc..
|
|
199
|
-
return relation;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
export function addExtraFieldsToShowcaseEvents(eventPages, showcasedEvents) {
|
|
203
|
-
return showcasedEvents.reduce((acc, event) => {
|
|
204
|
-
for (let j = 0; j < eventPages.length; j += 1) {
|
|
205
|
-
if (event.id === eventPages[j].relation_id) {
|
|
206
|
-
return [...acc, { ...event, extra_fields: eventPages[j].extra_fields }];
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return acc;
|
|
211
|
-
}, []);
|
|
212
|
-
}
|
|
77
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import '@testing-library/jest-dom/extend-expect';
|
|
2
2
|
import { cleanup } from '@testing-library/react';
|
|
3
|
-
import { prepareSportsData
|
|
3
|
+
import { prepareSportsData } from './sports';
|
|
4
4
|
import getSportsData from '../../../tests/factories/sportsData/sportsData';
|
|
5
|
-
import getSportsDataPagesList from '../../../tests/factories/sportsData/sportsDataPage';
|
|
6
5
|
|
|
7
6
|
describe('Prepare Sports Data', () => {
|
|
8
7
|
const currentFullYear = new Date().getFullYear();
|
|
@@ -109,180 +108,6 @@ describe('Prepare Sports Data', () => {
|
|
|
109
108
|
});
|
|
110
109
|
});
|
|
111
110
|
|
|
112
|
-
describe('Add Sports Data', () => {
|
|
113
|
-
const themeType = null;
|
|
114
|
-
let pages = null;
|
|
115
|
-
let sportsData = null;
|
|
116
|
-
let relation = {};
|
|
117
|
-
|
|
118
|
-
beforeEach(() => {
|
|
119
|
-
pages = getSportsDataPagesList();
|
|
120
|
-
sportsData = getSportsData();
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
test('active sport and filter providers by sport', () => {
|
|
124
|
-
const activeSportPages = pages.filter(
|
|
125
|
-
(page) =>
|
|
126
|
-
(page.template === 'sport' || page.template === 'live_stream_providers') &&
|
|
127
|
-
page.relation_id &&
|
|
128
|
-
sportsData.sports[page.relation_id]
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
relation = addSportsDataToPage(sportsData, activeSportPages[0], themeType);
|
|
132
|
-
expect(relation.schedule.length).toEqual(0);
|
|
133
|
-
expect(relation.featured_events.length).toEqual(0);
|
|
134
|
-
expect(relation.providers.length).toEqual(1);
|
|
135
|
-
expect(relation.sport.name).toEqual('tennis');
|
|
136
|
-
|
|
137
|
-
relation = addSportsDataToPage(sportsData, activeSportPages[1], themeType);
|
|
138
|
-
expect(Object.values(relation.schedule).length).toEqual(2);
|
|
139
|
-
expect(Object.values(relation.featured_events).length).toEqual(3);
|
|
140
|
-
expect(Object.values(relation.providers).length).toEqual(2);
|
|
141
|
-
expect(relation.sport.name).toEqual('soccer');
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
test('add event data to "event" page type', () => {
|
|
145
|
-
const eventPages = pages.filter(
|
|
146
|
-
(page) => page.template === 'event' && page.relation_id && sportsData.events[page.relation_id]
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
relation = addSportsDataToPage(sportsData, eventPages[0], themeType);
|
|
150
|
-
expect(relation.event.id).toEqual(eventPages[0].relation_id);
|
|
151
|
-
expect(relation.sport.name).toEqual('soccer');
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
test('add providers to "homepage" and "provider_reviews" page type', () => {
|
|
155
|
-
const homeProviderPages = pages.filter(
|
|
156
|
-
(page) => page.template === 'homepage' || page.template === 'provider_reviews'
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
relation = addSportsDataToPage(sportsData, homeProviderPages[0], themeType);
|
|
160
|
-
expect(relation.providers.length).toEqual(2);
|
|
161
|
-
expect(relation.providers[1].name).toEqual('Viaplay.dk');
|
|
162
|
-
|
|
163
|
-
relation = addSportsDataToPage(sportsData, homeProviderPages[1], themeType);
|
|
164
|
-
expect(relation.providers[0].name).toEqual('Bet365');
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
test('add a provider to "provider review" page type', () => {
|
|
168
|
-
const providerReviewPages = pages.filter(
|
|
169
|
-
(page) => page.template === 'provider_review' && page.relation_id
|
|
170
|
-
);
|
|
171
|
-
|
|
172
|
-
relation = addSportsDataToPage(sportsData, providerReviewPages[0], themeType);
|
|
173
|
-
expect(relation.provider.name).toEqual('Bet365');
|
|
174
|
-
expect(relation.provider.id).toEqual(`${providerReviewPages[0].relation_id}`);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
test('add all events schedule to "live stream" page type', () => {
|
|
178
|
-
const liveStreamPages = pages.filter((page) => page.template === 'live_stream');
|
|
179
|
-
|
|
180
|
-
relation = addSportsDataToPage(sportsData, liveStreamPages[0], themeType);
|
|
181
|
-
expect(Object.keys(relation.schedule).length).toEqual(3);
|
|
182
|
-
expect(Object.keys(relation.schedule.soccer).length).toEqual(2);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
// rage-seo pages data
|
|
186
|
-
test('rage-seo homepage data', () => {
|
|
187
|
-
const seoHomePages = pages.filter((page) => page.template === 'homepage');
|
|
188
|
-
|
|
189
|
-
relation = addSportsDataToPage(sportsData, seoHomePages[0], 'rage_seo');
|
|
190
|
-
expect(Object.values(relation.schedule).length).toEqual(2);
|
|
191
|
-
expect(relation.featured_events.length).toEqual(3);
|
|
192
|
-
expect(Object.values(relation.tournaments).length).toEqual(2);
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
test('rage-seo live_stream data', () => {
|
|
196
|
-
const seoLiveStreamPages = pages.filter((page) => page.template === 'live_stream');
|
|
197
|
-
|
|
198
|
-
relation = addSportsDataToPage(sportsData, seoLiveStreamPages[0], 'rage_seo');
|
|
199
|
-
expect(Object.values(relation.schedule).length).toEqual(2);
|
|
200
|
-
expect(relation.providers.length).toEqual(2);
|
|
201
|
-
expect(relation.providers[0].name).toEqual('Bet365');
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
test('rage-seo live_stream_providers data', () => {
|
|
205
|
-
const seoLiveStreamProviderPages = pages.filter(
|
|
206
|
-
(page) => page.template === 'live_stream_providers'
|
|
207
|
-
);
|
|
208
|
-
|
|
209
|
-
relation = addSportsDataToPage(sportsData, seoLiveStreamProviderPages[0], 'rage_seo');
|
|
210
|
-
expect(relation.providers.length).toEqual(2);
|
|
211
|
-
expect(relation.providers[0].name).toEqual('Bet365');
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
test('rage-seo team data', () => {
|
|
215
|
-
const seoTeamPages = pages.filter(
|
|
216
|
-
(page) => page.template === 'team' && page.relation_id && sportsData.teams[page.relation_id]
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
relation = addSportsDataToPage(sportsData, seoTeamPages[0], 'rage_seo');
|
|
220
|
-
expect(relation.team.name).toEqual('FC Midtjylland');
|
|
221
|
-
expect(relation.event.id).toEqual(30184);
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
test('rage-seo tournament data', () => {
|
|
225
|
-
const seoTournamentPages = pages.filter(
|
|
226
|
-
(page) =>
|
|
227
|
-
page.template === 'tournament' &&
|
|
228
|
-
page.relation_id &&
|
|
229
|
-
sportsData.tournaments[page.relation_id]
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
relation = addSportsDataToPage(sportsData, seoTournamentPages[0], 'rage_seo');
|
|
233
|
-
expect(relation.event.id).toEqual(30184);
|
|
234
|
-
expect(relation.providers.length).toEqual(2);
|
|
235
|
-
expect(relation.providers[0].name).toEqual('Bet365');
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
test('rage-seo event data', () => {
|
|
239
|
-
const seoEventPages = pages.filter(
|
|
240
|
-
(page) => page.template === 'event' && page.relation_id && sportsData.events[page.relation_id]
|
|
241
|
-
);
|
|
242
|
-
|
|
243
|
-
relation = addSportsDataToPage(sportsData, seoEventPages[0], 'rage_seo');
|
|
244
|
-
expect(relation.event.id).toEqual(seoEventPages[0].relation_id);
|
|
245
|
-
expect(relation.tournament.name).toEqual('England Championship');
|
|
246
|
-
expect(relation.schedule.length).toEqual(2);
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
test('rage-seo team/tournament/event data', () => {
|
|
250
|
-
const seoTeamTournamentEventPages = pages.filter(
|
|
251
|
-
(page) =>
|
|
252
|
-
page.template === 'team' || page.template === 'tournament' || page.template === 'event'
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
relation = addSportsDataToPage(sportsData, seoTeamTournamentEventPages[0], 'rage_seo');
|
|
256
|
-
expect(relation.mainProviders[0].name).toEqual('Bet365');
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
test('rage-seo leagues_list data', () => {
|
|
260
|
-
const seoLeaguesPages = pages.filter((page) => page.template === 'leagues_list');
|
|
261
|
-
|
|
262
|
-
relation = addSportsDataToPage(sportsData, seoLeaguesPages[0], 'rage_seo');
|
|
263
|
-
expect(Object.values(relation.tournaments).length).toEqual(2);
|
|
264
|
-
expect(Object.values(relation.tournaments)[1].name).toEqual('Super Cup');
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
describe('Add Extra fields to showcase events', () => {
|
|
269
|
-
let pages = null;
|
|
270
|
-
let sportsData = null;
|
|
271
|
-
|
|
272
|
-
beforeEach(() => {
|
|
273
|
-
pages = getSportsDataPagesList();
|
|
274
|
-
sportsData = getSportsData();
|
|
275
|
-
});
|
|
276
|
-
|
|
277
|
-
test('addExtraFieldsToShowcaseEvents', () => {
|
|
278
|
-
const eventPages = pages.filter((page) => page.template === 'event' && page.relation_id);
|
|
279
|
-
|
|
280
|
-
const events = addExtraFieldsToShowcaseEvents(eventPages, Object.values(sportsData.events));
|
|
281
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
282
|
-
events.forEach((event) => expect(event.extra_fields).toBeTruthy());
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
|
|
286
111
|
afterEach(() => {
|
|
287
112
|
cleanup();
|
|
288
113
|
});
|