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 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
- if (["rage_seo", "rage_ppc", "sports"].includes(siteGeneralData.type)) {
306
- sports = Object.keys(response.relations["sports_data"].sports).map(
307
- (key) => response.relations["sports_data"].sports[key]
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
- if (page.relation_type === "event" && !page.relation.event) {
349
- return;
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
- if (["rage_seo", "rage_ppc"].includes(siteGeneralData.type)) {
418
- Object.keys(
419
- (processed.relations &&
420
- processed.relations.sports_data &&
421
- processed.relations.sports_data.providers) ||
422
- {}
423
- ).forEach((providerId) => {
424
- const provider = processed.relations.sports_data.providers[providerId];
425
- const tracker = generateTrackerLink(provider, "main", true, pageTemplate);
426
- const trackerPageObject = {
427
- meta_title: "Tracker",
428
- template: pageTemplate,
429
- title: "Tracker",
430
- relation_type: "page",
431
- language: defaultLanguage,
432
- path: tracker,
433
- meta_robots: ["noindex", "nofollow"],
434
- };
435
- createPage({
436
- path: tracker,
437
- component: `${__dirname}/src/components/app.js`,
438
- context: {
439
- page: trackerPageObject,
440
- siteGeneralData,
441
- provider,
442
- isTracker: true,
443
- isLiveStreamProvider: true,
444
- meta_robots: ["noindex", "nofollow"],
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
@@ -45,7 +45,7 @@ module.exports = {
45
45
  collectCoverage: true,
46
46
  coverageThreshold: {
47
47
  global: {
48
- statements: 81,
48
+ statements: 80,
49
49
  },
50
50
  },
51
51
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-core-theme",
3
- "version": "41.1.5",
3
+ "version": "41.1.6-beta.2",
4
4
  "description": "Gatsby Theme NPM Package",
5
5
  "author": "",
6
6
  "license": "ISC",
@@ -6,8 +6,8 @@ import styles from "./preview.module.scss";
6
6
 
7
7
  const PreviewLink = ({ page, preview, activeMarket }) => {
8
8
 
9
- const path = activeMarket && activeMarket.path_prefix ? page.path.replace(`${activeMarket.path_prefix}/`, '') : page.path;
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
- generalData.type
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
- // set page relation
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
- translations
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, addSportsDataToPage, addExtraFieldsToShowcaseEvents } from './sports';
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
  });