Skip to content

Commit

Permalink
v0.5.10: Implemented more tests, improved Pairi Daiza, added Efteling…
Browse files Browse the repository at this point in the history
… menus
  • Loading branch information
timyboy12345 committed Nov 27, 2024
1 parent 6d72410 commit bd3c219
Show file tree
Hide file tree
Showing 18 changed files with 202 additions and 106 deletions.
192 changes: 97 additions & 95 deletions README.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "themeparks-node-api",
"version": "0.5.9",
"version": "0.5.10",
"description": "An API which can retrieve theme park wait times.",
"author": "Tim Arendsen",
"private": false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export class BeekseBergenTransferService extends TransferService {
return this.transferItemToPoi(PoiCategory.ATTRACTION, ride);
}

// TODO: Implement new API url
private transferItemToPoi(category: PoiCategory, data: BeekseBergenApiResponseItem): Poi {
const poi: Poi = {
category: category,
Expand Down
1 change: 1 addition & 0 deletions src/parks/beekse-bergen/safaripark/safaripark.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ export class SafariparkService extends ThroughPoisThemeParkService {
return this.transferService.transferDataObjectToPois(d);
}

// TODO: Use other API endpoint to fetch more data
async fetchPage(page: number): Promise<BeekseBergenLocationsResponseInterface> {
// Beekse Bergen Resort ID: 5, Speelland: 6
const url = 'https://xmp.xo10.io/api/locations?populate=*&filters%5Bresort%5D=5';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ export class EftelingTransferService extends TransferService {
};
}

if (eftelingPoi.fields.menu_card_pdf) {
poi.menuUrl = eftelingPoi.fields.menu_card_pdf;
}

if (c === PoiCategory.ATTRACTION) {
if (eftelingPoi.fields.targetgroups) {
if (eftelingPoi.fields.targetgroups.includes('whole-family')) {
Expand Down Expand Up @@ -176,9 +180,9 @@ export class EftelingTransferService extends TransferService {
openTime: ot.Open,
close: ot.Close,
closeTime: ot.Close,
}
})
}
})
};
}),
};
});
}
}
1 change: 1 addition & 0 deletions src/parks/efteling/interfaces/efteling-poi.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export interface EftelingPoi {
text: string,
can_order: boolean,
latlon: string,
menu_card_pdf: string | null,
targetgroups: string[],
language: string,

Expand Down
10 changes: 10 additions & 0 deletions src/parks/familypark/familypark/familypark.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,14 @@ describe('FamilyparkService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

// it('should return info', () => {
// expect(service.getInfo().id).toBeDefined();
// });
//
// it('should return a list of POIs', async () => {
// const data = await service.getPois();
// expect(data).toBeInstanceOf(Array);
// expect(data.length).toBeGreaterThan(6);
// }, 1000 * 60);
});
1 change: 1 addition & 0 deletions src/parks/familypark/familypark/familypark.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ import { Injectable } from '@nestjs/common';

@Injectable()
export class FamilyparkService {}
// TODO: Implement Family Park
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,14 @@ describe('HeidiParkService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

it('should return info', () => {
expect(service.getInfo().id).toBeDefined();
});

it('should return a list of POIs', async () => {
const data = await service.getPois();
expect(data).toBeInstanceOf(Array);
expect(data.length).toBeGreaterThan(6);
}, 1000 * 60);
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
} from '../interfaces/PairiDaizaResponse';
import { PoiCategory } from '../../../_interfaces/poi-categories.enum';
import * as moment from 'moment-timezone';
import * as sluggo from 'sluggo';

@Injectable()
export class PairiDaizaTransferService extends TransferService {
Expand Down Expand Up @@ -42,8 +43,9 @@ export class PairiDaizaTransferService extends TransferService {
break;
}

p.title = poi.Name[loc];
p.title = this.titleCase(poi.Name[loc]);
p.description = poi.Description[loc];
p.id = sluggo(poi.Name[loc])

p.facts = [];
if ('AnimalClass' in poi) {
Expand Down Expand Up @@ -116,7 +118,7 @@ export class PairiDaizaTransferService extends TransferService {
});
} else {
p.openingTimes.push({
date: moment().format(),
date: moment().format('YYYY-MM-DD'),
open: start.format(),
openTime: start.format('HH:mm:ss'),
close: oh.EndHour !== '00:00:00' ? end.format() : undefined,
Expand Down Expand Up @@ -157,4 +159,17 @@ export class PairiDaizaTransferService extends TransferService {
category: PoiCategory.SHOP,
};
}

private titleCase(str: string): string {
const splitStr = str.toLowerCase().split(' ');

for (let i = 0; i < splitStr.length; i++) {
// You do not need to check if i is larger than splitStr length, as your for does that for you
// Assign it back to the array
splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
}

// Directly return the joined string
return splitStr.join(' ');
}
}
10 changes: 10 additions & 0 deletions src/parks/pairi-daiza/pairi-daiza.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,14 @@ describe('PairiDaizaService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

it('should return info', () => {
expect(service.getInfo().id).toBeDefined();
});

it('should return a list of POIs', async () => {
const data = await service.getPois();
expect(data).toBeInstanceOf(Array);
expect(data.length).toBeGreaterThan(6);
}, 1000 * 60);
});
4 changes: 2 additions & 2 deletions src/parks/pairi-daiza/pairi-daiza.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export class PairiDaizaService extends ThemeParkService {
lng: 3.8873162,
},
parkType: ParkType.ZOO,
countryCode: 'BE',
countryCode: 'be',
};
}

Expand All @@ -35,7 +35,7 @@ export class PairiDaizaService extends ThemeParkService {
supportsPoiLocations: true,
supportsPois: false,
supportsRestaurantOpeningTimes: false,
supportsRestaurants: false,
supportsRestaurants: true,
supportsRideWaitTimes: false,
supportsRideWaitTimesHistory: false,
supportsRides: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,14 @@ describe('BobbejaanlandService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

it('should return info', () => {
expect(service.getInfo().id).toBeDefined();
});

it('should return a list of POIs', async () => {
const data = await service.getPois();
expect(data).toBeInstanceOf(Array);
expect(data.length).toBeGreaterThan(6);
}, 1000 * 60);
});
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,14 @@ describe('MarinelandCoteDazurService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

it('should return info', () => {
expect(service.getInfo().id).toBeDefined();
});

it('should return a list of POIs', async () => {
const data = await service.getPois();
expect(data).toBeInstanceOf(Array);
expect(data.length).toBeGreaterThan(6);
}, 1000 * 60);
});
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,14 @@ describe('MirabilandiaService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

it('should return info', () => {
expect(service.getInfo().id).toBeDefined();
});

it('should return a list of POIs', async () => {
const data = await service.getPois();
expect(data).toBeInstanceOf(Array);
expect(data.length).toBeGreaterThan(6);
}, 1000 * 60);
});
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,14 @@ describe('SanDiegoSafariParkService', () => {
it('should be defined', () => {
expect(service).toBeDefined();
});

// it('should return info', () => {
// expect(service.getInfo().id).toBeDefined();
// });
//
// it('should return a list of POIs', async () => {
// const data = await service.getPois();
// expect(data).toBeInstanceOf(Array);
// expect(data.length).toBeGreaterThan(6);
// }, 1000 * 60);
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ import { Injectable } from '@nestjs/common';

@Injectable()
export class SanDiegoSafariParkService {}
// TODO: Implement Safari Park

0 comments on commit bd3c219

Please sign in to comment.