Merge pull request 'Alpha Release 0.4.1' (#134) from dev into main
Reviewed-on: #134 Reviewed-by: Philipp Dormann <philipp@philippdormann.de>
This commit is contained in:
commit
71cab4e836
37
CHANGELOG.md
37
CHANGELOG.md
|
@ -2,20 +2,34 @@
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [v0.4.1](https://git.odit.services/lfk/backend/compare/v0.4.0...v0.4.1)
|
||||||
|
|
||||||
|
- Deleted useless file [ci skip] [`94dd796`](https://git.odit.services/lfk/backend/commit/94dd7963b73d98089f086175ed79002f59195c26)
|
||||||
|
- Implemented the interface in all responses [`9d5e486`](https://git.odit.services/lfk/backend/commit/9d5e486c6ddb4db87d36409fbd8bca1bf9659e9f)
|
||||||
|
- Adjusted tests for the new responseType parameter (part 1) [`bcc15e4`](https://git.odit.services/lfk/backend/commit/bcc15e42863b641b97cd03440f141332e112c889)
|
||||||
|
- Cleaned up realations regarding response classes [`ff7406e`](https://git.odit.services/lfk/backend/commit/ff7406e71a4a76670d381b415bfb66f602e1206b)
|
||||||
|
- Added Responseobjecttype enum [`581ca5f`](https://git.odit.services/lfk/backend/commit/581ca5ff6c67ed1c701c06532671441293ee0706)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`0229534`](https://git.odit.services/lfk/backend/commit/02295346dad109745faa492dc968abbc98522804)
|
||||||
|
- Dependency bump🔝 [skip ci] [`3d1baae`](https://git.odit.services/lfk/backend/commit/3d1baae0cce26b0c1f6948778b15f4b0097a77a9)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`7ba67b9`](https://git.odit.services/lfk/backend/commit/7ba67b9dcab7692c8c1e548ccbc3895eb084eedd)
|
||||||
|
- Adjusted tests for the new responseType parameter (part 3) [`8dc2810`](https://git.odit.services/lfk/backend/commit/8dc2810c0c4097e26bf1b517bb9d0b102494f6c1)
|
||||||
|
- Added a Response interface [`e44cc4c`](https://git.odit.services/lfk/backend/commit/e44cc4c4cbecdf7c8d90f0af73fffd8b01eba61e)
|
||||||
|
- Adjusted tests for the new responseType parameter (part 2) [`ff8af09`](https://git.odit.services/lfk/backend/commit/ff8af090e3ea1760fb6110284cff870a0b4cbf84)
|
||||||
|
- 🚀Bumped version to v0.4.1 [`c32fa93`](https://git.odit.services/lfk/backend/commit/c32fa93673010ab18e009ab24fc139ed4f67310e)
|
||||||
|
- Merge pull request 'Response object types feature/132-object_types' (#133) from feature/132-object_types into dev [`6e5f1bd`](https://git.odit.services/lfk/backend/commit/6e5f1bd5ff217a88ec2dfaf154e5e26dee588e12)
|
||||||
|
- Fixed typos and missing types [`2a87819`](https://git.odit.services/lfk/backend/commit/2a878194865d406123805659c011c329c955f669)
|
||||||
|
|
||||||
#### [v0.4.0](https://git.odit.services/lfk/backend/compare/v0.3.1...v0.4.0)
|
#### [v0.4.0](https://git.odit.services/lfk/backend/compare/v0.3.1...v0.4.0)
|
||||||
|
|
||||||
|
> 30 January 2021
|
||||||
|
|
||||||
|
- Merge pull request 'Alpha Release 0.4.0' (#131) from dev into main [`c4ea808`](https://git.odit.services/lfk/backend/commit/c4ea808e06bdc68add5636346f99a7d292852ab0)
|
||||||
|
- Added pw reset template provided by @philipp [`c116338`](https://git.odit.services/lfk/backend/commit/c116338cd74cf726362f8fa0ae5eea7ec9fabac4)
|
||||||
- Added test mail templates [`8270029`](https://git.odit.services/lfk/backend/commit/827002989ee6e3f0d776b5b55b8fb6d65f10c898)
|
- Added test mail templates [`8270029`](https://git.odit.services/lfk/backend/commit/827002989ee6e3f0d776b5b55b8fb6d65f10c898)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`09b24aa`](https://git.odit.services/lfk/backend/commit/09b24aa6094a980debf4428a1c32583cdb7b606f)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`09b24aa`](https://git.odit.services/lfk/backend/commit/09b24aa6094a980debf4428a1c32583cdb7b606f)
|
||||||
- Table fix [`1f0c842`](https://git.odit.services/lfk/backend/commit/1f0c842d9e086456f1ae0f6908e474258a04beb4)
|
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`fea4857`](https://git.odit.services/lfk/backend/commit/fea485768570eb5de2bbd2783e339794a67db2de)
|
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`e07f258`](https://git.odit.services/lfk/backend/commit/e07f258a315898d1183c311e7fcd8f65a415504c)
|
|
||||||
- 🚀Bumped version to v0.4.0 [`e5f4f6e`](https://git.odit.services/lfk/backend/commit/e5f4f6ee590e0885d6eef9151ce7eb76578b70ca)
|
|
||||||
- Merge pull request 'Implemented testmail endpoint feature/124-testmail' (#130) from feature/124-testmail into dev [`f9e75d0`](https://git.odit.services/lfk/backend/commit/f9e75d06b8ee8ff79f60fb384cb2c35ccf19811d)
|
|
||||||
- Merge pull request 'Email Basics feature/118-emails' (#128) from feature/118-emails into dev [`348e6cd`](https://git.odit.services/lfk/backend/commit/348e6cdec7411345953243edfb5322a17ad7614d)
|
|
||||||
- Merge pull request 'Mail+Env documentation feature/123-mail_documentation' (#129) from feature/123-mail_documentation into dev [`61bbeb0`](https://git.odit.services/lfk/backend/commit/61bbeb0d8f3fd6bfafb65bd11eb4c076a27b4a53)
|
|
||||||
- Added pw reset template provided by @philipp [`c116338`](https://git.odit.services/lfk/backend/commit/c116338cd74cf726362f8fa0ae5eea7ec9fabac4)
|
|
||||||
- Implemented automatic ci env generation [`536de2a`](https://git.odit.services/lfk/backend/commit/536de2a3199b1befed54b6fe520a2e3fcefe0d90)
|
- Implemented automatic ci env generation [`536de2a`](https://git.odit.services/lfk/backend/commit/536de2a3199b1befed54b6fe520a2e3fcefe0d90)
|
||||||
- Implemented a basic mailer with reset link sending [`6379753`](https://git.odit.services/lfk/backend/commit/637975305f1adf9bf505507790638cf1e229cfb1)
|
- Implemented a basic mailer with reset link sending [`6379753`](https://git.odit.services/lfk/backend/commit/637975305f1adf9bf505507790638cf1e229cfb1)
|
||||||
|
- Table fix [`1f0c842`](https://git.odit.services/lfk/backend/commit/1f0c842d9e086456f1ae0f6908e474258a04beb4)
|
||||||
- Implemented the test-mail endpoint via a new mailcontroller [`54ed313`](https://git.odit.services/lfk/backend/commit/54ed313342a72b029b9545bc5ea193e3f0c2166d)
|
- Implemented the test-mail endpoint via a new mailcontroller [`54ed313`](https://git.odit.services/lfk/backend/commit/54ed313342a72b029b9545bc5ea193e3f0c2166d)
|
||||||
- Added documentation for the env vars [`13ccab5`](https://git.odit.services/lfk/backend/commit/13ccab5e289d0a629cefb7fe281a85a46058ae97)
|
- Added documentation for the env vars [`13ccab5`](https://git.odit.services/lfk/backend/commit/13ccab5e289d0a629cefb7fe281a85a46058ae97)
|
||||||
- Added comments [`9bd7636`](https://git.odit.services/lfk/backend/commit/9bd7636a23b5a9662ea2b965d2a2407727a188fb)
|
- Added comments [`9bd7636`](https://git.odit.services/lfk/backend/commit/9bd7636a23b5a9662ea2b965d2a2407727a188fb)
|
||||||
|
@ -24,8 +38,15 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||||
- Implementes mail sending on pw reset request [`e26744b`](https://git.odit.services/lfk/backend/commit/e26744b7925d32d65ef4cc3911651758cfc9274f)
|
- Implementes mail sending on pw reset request [`e26744b`](https://git.odit.services/lfk/backend/commit/e26744b7925d32d65ef4cc3911651758cfc9274f)
|
||||||
- Added a txt variant of the pw-reset mail [`d3647e3`](https://git.odit.services/lfk/backend/commit/d3647e339990d989dbca4d91aa8c3fe5789dd24a)
|
- Added a txt variant of the pw-reset mail [`d3647e3`](https://git.odit.services/lfk/backend/commit/d3647e339990d989dbca4d91aa8c3fe5789dd24a)
|
||||||
- Changed order [`583a4bc`](https://git.odit.services/lfk/backend/commit/583a4bc0dd0de8026bb2eb6a9b0c31f59344e813)
|
- Changed order [`583a4bc`](https://git.odit.services/lfk/backend/commit/583a4bc0dd0de8026bb2eb6a9b0c31f59344e813)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`fea4857`](https://git.odit.services/lfk/backend/commit/fea485768570eb5de2bbd2783e339794a67db2de)
|
||||||
- Translated the pw reset mail to english [`5cade25`](https://git.odit.services/lfk/backend/commit/5cade25eeb137eb5890b3fd450646acfbdff2e8b)
|
- Translated the pw reset mail to english [`5cade25`](https://git.odit.services/lfk/backend/commit/5cade25eeb137eb5890b3fd450646acfbdff2e8b)
|
||||||
- The auth tests now use mail to identify the user [`c43334b`](https://git.odit.services/lfk/backend/commit/c43334bf96901bfd5116301ff7cf4b2ae1dfcbd3)
|
- The auth tests now use mail to identify the user [`c43334b`](https://git.odit.services/lfk/backend/commit/c43334bf96901bfd5116301ff7cf4b2ae1dfcbd3)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`e07f258`](https://git.odit.services/lfk/backend/commit/e07f258a315898d1183c311e7fcd8f65a415504c)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`b972395`](https://git.odit.services/lfk/backend/commit/b972395ae8bb06184baa56296a3b8bfc16ae96a7)
|
||||||
|
- 🚀Bumped version to v0.4.0 [`e5f4f6e`](https://git.odit.services/lfk/backend/commit/e5f4f6ee590e0885d6eef9151ce7eb76578b70ca)
|
||||||
|
- Merge pull request 'Implemented testmail endpoint feature/124-testmail' (#130) from feature/124-testmail into dev [`f9e75d0`](https://git.odit.services/lfk/backend/commit/f9e75d06b8ee8ff79f60fb384cb2c35ccf19811d)
|
||||||
|
- Merge pull request 'Email Basics feature/118-emails' (#128) from feature/118-emails into dev [`348e6cd`](https://git.odit.services/lfk/backend/commit/348e6cdec7411345953243edfb5322a17ad7614d)
|
||||||
|
- Merge pull request 'Mail+Env documentation feature/123-mail_documentation' (#129) from feature/123-mail_documentation into dev [`61bbeb0`](https://git.odit.services/lfk/backend/commit/61bbeb0d8f3fd6bfafb65bd11eb4c076a27b4a53)
|
||||||
- Added a test mail sending function [`b94179e`](https://git.odit.services/lfk/backend/commit/b94179e3caaf4be0654ca3372f57a490fb32e208)
|
- Added a test mail sending function [`b94179e`](https://git.odit.services/lfk/backend/commit/b94179e3caaf4be0654ca3372f57a490fb32e208)
|
||||||
- Added the first mail error [`c418603`](https://git.odit.services/lfk/backend/commit/c4186034233a296b5971fbef16e7ef6809fbac51)
|
- Added the first mail error [`c418603`](https://git.odit.services/lfk/backend/commit/c4186034233a296b5971fbef16e7ef6809fbac51)
|
||||||
- Now also sending txt mail body [`b92f633`](https://git.odit.services/lfk/backend/commit/b92f633d68604636cecc5e9fdd0d6990b9cb83fe)
|
- Now also sending txt mail body [`b92f633`](https://git.odit.services/lfk/backend/commit/b92f633d68604636cecc5e9fdd0d6990b9cb83fe)
|
||||||
|
|
16
package.json
16
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@odit/lfk-backend",
|
"name": "@odit/lfk-backend",
|
||||||
"version": "0.4.0",
|
"version": "0.4.1",
|
||||||
"main": "src/app.ts",
|
"main": "src/app.ts",
|
||||||
"repository": "https://git.odit.services/lfk/backend",
|
"repository": "https://git.odit.services/lfk/backend",
|
||||||
"author": {
|
"author": {
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
"libphonenumber-js": "^1.9.7",
|
"libphonenumber-js": "^1.9.9",
|
||||||
"mysql": "^2.18.1",
|
"mysql": "^2.18.1",
|
||||||
"nodemailer": "^6.4.17",
|
"nodemailer": "^6.4.17",
|
||||||
"pg": "^8.5.1",
|
"pg": "^8.5.1",
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
"routing-controllers": "^0.9.0-alpha.6",
|
"routing-controllers": "^0.9.0-alpha.6",
|
||||||
"routing-controllers-openapi": "^2.2.0",
|
"routing-controllers-openapi": "^2.2.0",
|
||||||
"sqlite3": "5.0.0",
|
"sqlite3": "5.0.0",
|
||||||
"typeorm": "^0.2.29",
|
"typeorm": "^0.2.30",
|
||||||
"typeorm-routing-controllers-extensions": "^0.2.0",
|
"typeorm-routing-controllers-extensions": "^0.2.0",
|
||||||
"typeorm-seeding": "^1.6.1",
|
"typeorm-seeding": "^1.6.1",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
|
@ -53,10 +53,10 @@
|
||||||
"@odit/license-exporter": "^0.0.9",
|
"@odit/license-exporter": "^0.0.9",
|
||||||
"@types/cors": "^2.8.9",
|
"@types/cors": "^2.8.9",
|
||||||
"@types/csvtojson": "^1.1.5",
|
"@types/csvtojson": "^1.1.5",
|
||||||
"@types/express": "^4.17.9",
|
"@types/express": "^4.17.11",
|
||||||
"@types/jest": "^26.0.16",
|
"@types/jest": "^26.0.20",
|
||||||
"@types/jsonwebtoken": "^8.5.0",
|
"@types/jsonwebtoken": "^8.5.0",
|
||||||
"@types/node": "^14.14.20",
|
"@types/node": "^14.14.22",
|
||||||
"@types/nodemailer": "^6.4.0",
|
"@types/nodemailer": "^6.4.0",
|
||||||
"@types/uuid": "^8.3.0",
|
"@types/uuid": "^8.3.0",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
|
@ -66,9 +66,9 @@
|
||||||
"release-it": "^14.2.2",
|
"release-it": "^14.2.2",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"start-server-and-test": "^1.11.7",
|
"start-server-and-test": "^1.11.7",
|
||||||
"ts-jest": "^26.4.4",
|
"ts-jest": "^26.5.0",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^9.1.1",
|
||||||
"typedoc": "^0.20.14",
|
"typedoc": "^0.20.19",
|
||||||
"typescript": "^4.1.3"
|
"typescript": "^4.1.3"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -78,7 +78,7 @@ export class DonationController {
|
||||||
async postDistance(@Body({ validate: true }) createDonation: CreateDistanceDonation) {
|
async postDistance(@Body({ validate: true }) createDonation: CreateDistanceDonation) {
|
||||||
let donation = await createDonation.toEntity();
|
let donation = await createDonation.toEntity();
|
||||||
donation = await this.distanceDonationRepository.save(donation);
|
donation = await this.distanceDonationRepository.save(donation);
|
||||||
return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse();
|
return (await this.distanceDonationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Put('/fixed/:id')
|
@Put('/fixed/:id')
|
||||||
|
@ -124,7 +124,7 @@ export class DonationController {
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.distanceDonationRepository.save(await donation.update(oldDonation));
|
await this.distanceDonationRepository.save(await donation.update(oldDonation));
|
||||||
return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse();
|
return (await this.distanceDonationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Delete('/:id')
|
@Delete('/:id')
|
||||||
|
|
|
@ -36,7 +36,7 @@ export class ScanController {
|
||||||
@OpenAPI({ description: 'Lists all scans (normal or track) from all runners. <br> This includes the scan\'s runner\'s distance ran.' })
|
@OpenAPI({ description: 'Lists all scans (normal or track) from all runners. <br> This includes the scan\'s runner\'s distance ran.' })
|
||||||
async getAll() {
|
async getAll() {
|
||||||
let responseScans: ResponseScan[] = new Array<ResponseScan>();
|
let responseScans: ResponseScan[] = new Array<ResponseScan>();
|
||||||
const scans = await this.scanRepository.find({ relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] });
|
const scans = await this.scanRepository.find({ relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] });
|
||||||
scans.forEach(scan => {
|
scans.forEach(scan => {
|
||||||
responseScans.push(scan.toResponse());
|
responseScans.push(scan.toResponse());
|
||||||
});
|
});
|
||||||
|
@ -51,7 +51,7 @@ export class ScanController {
|
||||||
@OnUndefined(ScanNotFoundError)
|
@OnUndefined(ScanNotFoundError)
|
||||||
@OpenAPI({ description: 'Lists all information about the scan whose id got provided. This includes the scan\'s runner\'s distance ran.' })
|
@OpenAPI({ description: 'Lists all information about the scan whose id got provided. This includes the scan\'s runner\'s distance ran.' })
|
||||||
async getOne(@Param('id') id: number) {
|
async getOne(@Param('id') id: number) {
|
||||||
let scan = await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })
|
let scan = await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] })
|
||||||
if (!scan) { throw new ScanNotFoundError(); }
|
if (!scan) { throw new ScanNotFoundError(); }
|
||||||
return scan.toResponse();
|
return scan.toResponse();
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ export class ScanController {
|
||||||
async post(@Body({ validate: true }) createScan: CreateScan) {
|
async post(@Body({ validate: true }) createScan: CreateScan) {
|
||||||
let scan = await createScan.toEntity();
|
let scan = await createScan.toEntity();
|
||||||
scan = await this.scanRepository.save(scan);
|
scan = await this.scanRepository.save(scan);
|
||||||
return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post("/trackscans")
|
@Post("/trackscans")
|
||||||
|
@ -75,7 +75,7 @@ export class ScanController {
|
||||||
async postTrackScans(@Body({ validate: true }) createScan: CreateTrackScan) {
|
async postTrackScans(@Body({ validate: true }) createScan: CreateTrackScan) {
|
||||||
let scan = await createScan.toEntity();
|
let scan = await createScan.toEntity();
|
||||||
scan = await this.trackScanRepository.save(scan);
|
scan = await this.trackScanRepository.save(scan);
|
||||||
return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Put('/:id')
|
@Put('/:id')
|
||||||
|
@ -97,7 +97,7 @@ export class ScanController {
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.scanRepository.save(await scan.update(oldScan));
|
await this.scanRepository.save(await scan.update(oldScan));
|
||||||
return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Put('/trackscans/:id')
|
@Put('/trackscans/:id')
|
||||||
|
@ -120,7 +120,7 @@ export class ScanController {
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.trackScanRepository.save(await scan.update(oldScan));
|
await this.trackScanRepository.save(await scan.update(oldScan));
|
||||||
return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] })).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Delete('/:id')
|
@Delete('/:id')
|
||||||
|
@ -132,7 +132,7 @@ export class ScanController {
|
||||||
async remove(@Param("id") id: number, @QueryParam("force") force: boolean) {
|
async remove(@Param("id") id: number, @QueryParam("force") force: boolean) {
|
||||||
let scan = await this.scanRepository.findOne({ id: id });
|
let scan = await this.scanRepository.findOne({ id: id });
|
||||||
if (!scan) { return null; }
|
if (!scan) { return null; }
|
||||||
const responseScan = await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] });
|
const responseScan = await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.group', 'runner.scans.track', 'card', 'station'] });
|
||||||
|
|
||||||
await this.scanRepository.delete(scan);
|
await this.scanRepository.delete(scan);
|
||||||
return responseScan.toResponse();
|
return responseScan.toResponse();
|
||||||
|
|
|
@ -4,7 +4,6 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { ChildEntity, Column } from "typeorm";
|
import { ChildEntity, Column } from "typeorm";
|
||||||
import { ResponsePrincipal } from '../responses/ResponsePrincipal';
|
|
||||||
import { ResponseUserGroup } from '../responses/ResponseUserGroup';
|
import { ResponseUserGroup } from '../responses/ResponseUserGroup';
|
||||||
import { Principal } from './Principal';
|
import { Principal } from './Principal';
|
||||||
|
|
||||||
|
@ -34,7 +33,7 @@ export class UserGroup extends Principal {
|
||||||
/**
|
/**
|
||||||
* Turns this entity into it's response class.
|
* Turns this entity into it's response class.
|
||||||
*/
|
*/
|
||||||
public toResponse(): ResponsePrincipal {
|
public toResponse(): ResponseUserGroup {
|
||||||
return new ResponseUserGroup(this);
|
return new ResponseUserGroup(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
/**
|
||||||
|
* This enum contains all object types/entities a response can contain.
|
||||||
|
*/
|
||||||
|
export enum ResponseObjectType {
|
||||||
|
AUTH = 'AUTH',
|
||||||
|
DISTANCEDONATION = 'DISTANCEDONATION',
|
||||||
|
DONATION = 'DONATION',
|
||||||
|
DONOR = 'DONOR',
|
||||||
|
EMPTY = 'EMPTY',
|
||||||
|
GROUPCONTACT = 'GROUPCONTACT',
|
||||||
|
LOGOUT = 'LOGOUT',
|
||||||
|
PARTICIPANT = 'PARTICIPANT',
|
||||||
|
PERMISSION = 'PERMISSION',
|
||||||
|
PRINCIPAL = 'PRINCIPAL',
|
||||||
|
RUNNER = 'RUNNER',
|
||||||
|
RUNNERCARD = 'RUNNERCARD',
|
||||||
|
RUNNERGROUP = 'RUNNERGROUP',
|
||||||
|
RUNNERORGANIZATION = 'RUNNERORGANIZATION',
|
||||||
|
RUNNERTEAM = 'RUNNERTEAM',
|
||||||
|
SCAN = 'SCAN',
|
||||||
|
SCANSTATION = 'SCANSTATION',
|
||||||
|
SELFSERVICEDONATION = 'SELFSERVICEDONATION',
|
||||||
|
SELFSERVICERUNNER = 'SELFSERVICRUNNER',
|
||||||
|
STATS = 'STATS',
|
||||||
|
STATSCLIENT = 'STATSCLIENT',
|
||||||
|
STATSORGANIZATION = 'STATSORGANIZATION',
|
||||||
|
STATSRUNNER = 'STATSRUNNER',
|
||||||
|
STATSTEAM = 'STATSTEAM',
|
||||||
|
TRACK = 'TRACK',
|
||||||
|
TRACKSCAN = 'TRACKSCAN',
|
||||||
|
USER = 'USER',
|
||||||
|
USERGROUP = 'USERGROUP',
|
||||||
|
USERPERMISSIONS = 'USERPERMISSIONS',
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the repsonse interface.
|
||||||
|
* This forces all response classes to implement the interfaces properties.
|
||||||
|
*/
|
||||||
|
export interface IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType;
|
||||||
|
}
|
|
@ -1,9 +1,18 @@
|
||||||
import { IsInt, IsString } from 'class-validator';
|
import { IsInt, IsString } from 'class-validator';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the repsonse auth.
|
* Defines the repsonse auth.
|
||||||
*/
|
*/
|
||||||
export class ResponseAuth {
|
export class ResponseAuth implements IResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.AUTH;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The access_token - JWT shortterm access token.
|
* The access_token - JWT shortterm access token.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
import { IsInt, IsObject, IsPositive } from 'class-validator';
|
import { IsInt, IsObject, IsPositive } from 'class-validator';
|
||||||
import { DistanceDonation } from '../entities/DistanceDonation';
|
import { DistanceDonation } from '../entities/DistanceDonation';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseDonation } from './ResponseDonation';
|
import { ResponseDonation } from './ResponseDonation';
|
||||||
import { ResponseRunner } from './ResponseRunner';
|
import { ResponseRunner } from './ResponseRunner';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the distance donation response.
|
* Defines the distance donation response.
|
||||||
*/
|
*/
|
||||||
export class ResponseDistanceDonation extends ResponseDonation {
|
export class ResponseDistanceDonation extends ResponseDonation implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.DISTANCEDONATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The donation's associated runner.
|
* The donation's associated runner.
|
||||||
|
@ -29,7 +36,7 @@ export class ResponseDistanceDonation extends ResponseDonation {
|
||||||
*/
|
*/
|
||||||
public constructor(donation: DistanceDonation) {
|
public constructor(donation: DistanceDonation) {
|
||||||
super(donation);
|
super(donation);
|
||||||
this.runner = donation.runner.toResponse();
|
if (donation.runner) { this.runner = donation.runner.toResponse(); }
|
||||||
this.amountPerDistance = donation.amountPerDistance;
|
this.amountPerDistance = donation.amountPerDistance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
import { IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
import { IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
||||||
import { Donation } from '../entities/Donation';
|
import { Donation } from '../entities/Donation';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseDonor } from './ResponseDonor';
|
import { ResponseDonor } from './ResponseDonor';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the donation response.
|
* Defines the donation response.
|
||||||
*/
|
*/
|
||||||
export class ResponseDonation {
|
export class ResponseDonation implements IResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.DONATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The donation's id.
|
* The donation's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,12 +2,19 @@ import {
|
||||||
IsBoolean, IsInt
|
IsBoolean, IsInt
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Donor } from '../entities/Donor';
|
import { Donor } from '../entities/Donor';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseParticipant } from './ResponseParticipant';
|
import { ResponseParticipant } from './ResponseParticipant';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the donor response.
|
* Defines the donor response.
|
||||||
*/
|
*/
|
||||||
export class ResponseDonor extends ResponseParticipant {
|
export class ResponseDonor extends ResponseParticipant implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.DONOR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does this donor need a receipt?
|
* Does this donor need a receipt?
|
||||||
|
|
|
@ -1,9 +1,17 @@
|
||||||
import { IsString } from 'class-validator';
|
import { IsString } from 'class-validator';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a empty response object.
|
* Defines a empty response object.
|
||||||
*/
|
*/
|
||||||
export class ResponseEmpty {
|
export class ResponseEmpty implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.EMPTY;
|
||||||
|
|
||||||
@IsString()
|
@IsString()
|
||||||
response: string = "nothing here"
|
response: string = "nothing here"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
import { IsInt, IsObject, IsString } from "class-validator";
|
import { IsInt, IsObject, IsString } from "class-validator";
|
||||||
import { Address } from '../entities/Address';
|
import { Address } from '../entities/Address';
|
||||||
import { GroupContact } from '../entities/GroupContact';
|
import { GroupContact } from '../entities/GroupContact';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the group contact response.
|
* Defines the group contact response.
|
||||||
*/
|
*/
|
||||||
export class ResponseGroupContact {
|
export class ResponseGroupContact implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.GROUPCONTACT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The contact's id.
|
* The contact's id.
|
||||||
*/
|
*/
|
||||||
|
@ -69,8 +77,10 @@ export class ResponseGroupContact {
|
||||||
this.email = contact.email;
|
this.email = contact.email;
|
||||||
this.address = contact.address;
|
this.address = contact.address;
|
||||||
this.groups = new Array<ResponseRunnerGroup>();
|
this.groups = new Array<ResponseRunnerGroup>();
|
||||||
for (let group of contact.groups) {
|
if (contact.groups) {
|
||||||
this.groups.push(group.toResponse());
|
for (let group of contact.groups) {
|
||||||
|
this.groups.push(group.toResponse());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,17 @@
|
||||||
import { IsString } from 'class-validator';
|
import { IsString } from 'class-validator';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the logout response.
|
* Defines the logout response.
|
||||||
*/
|
*/
|
||||||
export class Logout {
|
export class Logout implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.LOGOUT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The logout's timestamp.
|
* The logout's timestamp.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsInt, IsObject, IsOptional, IsString } from "class-validator";
|
import { IsInt, IsObject, IsOptional, IsString } from "class-validator";
|
||||||
import { Address } from '../entities/Address';
|
import { Address } from '../entities/Address';
|
||||||
import { Participant } from '../entities/Participant';
|
import { Participant } from '../entities/Participant';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the participant response.
|
* Defines the participant response.
|
||||||
*/
|
*/
|
||||||
export abstract class ResponseParticipant {
|
export abstract class ResponseParticipant implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.PARTICIPANT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The participant's id.
|
* The participant's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -7,12 +7,20 @@ import {
|
||||||
import { Permission } from '../entities/Permission';
|
import { Permission } from '../entities/Permission';
|
||||||
import { PermissionAction } from '../enums/PermissionAction';
|
import { PermissionAction } from '../enums/PermissionAction';
|
||||||
import { PermissionTarget } from '../enums/PermissionTargets';
|
import { PermissionTarget } from '../enums/PermissionTargets';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponsePrincipal } from './ResponsePrincipal';
|
import { ResponsePrincipal } from './ResponsePrincipal';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the permission response.
|
* Defines the permission response.
|
||||||
*/
|
*/
|
||||||
export class ResponsePermission {
|
export class ResponsePermission implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.PERMISSION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The permission's id.
|
* The permission's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,11 +2,19 @@ import {
|
||||||
IsInt
|
IsInt
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Principal } from '../entities/Principal';
|
import { Principal } from '../entities/Principal';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the principal response.
|
* Defines the principal response.
|
||||||
*/
|
*/
|
||||||
export abstract class ResponsePrincipal {
|
export abstract class ResponsePrincipal implements IResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.PRINCIPAL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The principal's id.
|
* The principal's id.
|
||||||
|
|
|
@ -3,13 +3,20 @@ import {
|
||||||
IsObject
|
IsObject
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Runner } from '../entities/Runner';
|
import { Runner } from '../entities/Runner';
|
||||||
import { RunnerGroup } from '../entities/RunnerGroup';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseParticipant } from './ResponseParticipant';
|
import { ResponseParticipant } from './ResponseParticipant';
|
||||||
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runner response.
|
* Defines the runner response.
|
||||||
*/
|
*/
|
||||||
export class ResponseRunner extends ResponseParticipant {
|
export class ResponseRunner extends ResponseParticipant implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.RUNNER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runner's currently ran distance in meters.
|
* The runner's currently ran distance in meters.
|
||||||
|
@ -21,7 +28,7 @@ export class ResponseRunner extends ResponseParticipant {
|
||||||
* The runner's group.
|
* The runner's group.
|
||||||
*/
|
*/
|
||||||
@IsObject()
|
@IsObject()
|
||||||
group: RunnerGroup;
|
group: ResponseRunnerGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ResponseRunner object from a runner.
|
* Creates a ResponseRunner object from a runner.
|
||||||
|
@ -31,6 +38,6 @@ export class ResponseRunner extends ResponseParticipant {
|
||||||
super(runner);
|
super(runner);
|
||||||
if (!runner.scans) { this.distance = 0 }
|
if (!runner.scans) { this.distance = 0 }
|
||||||
else { this.distance = runner.validScans.reduce((sum, current) => sum + current.distance, 0); }
|
else { this.distance = runner.validScans.reduce((sum, current) => sum + current.distance, 0); }
|
||||||
this.group = runner.group;
|
if (runner.group) { this.group = runner.group.toResponse(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsBoolean, IsEAN, IsInt, IsNotEmpty, IsObject, IsString } from "class-validator";
|
import { IsBoolean, IsEAN, IsInt, IsNotEmpty, IsObject, IsString } from "class-validator";
|
||||||
import { RunnerCard } from '../entities/RunnerCard';
|
import { RunnerCard } from '../entities/RunnerCard';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunner } from './ResponseRunner';
|
import { ResponseRunner } from './ResponseRunner';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runner card response.
|
* Defines the runner card response.
|
||||||
*/
|
*/
|
||||||
export class ResponseRunnerCard {
|
export class ResponseRunnerCard implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.RUNNERCARD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The card's id.
|
* The card's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsInt, IsNotEmpty, IsObject, IsOptional, IsString } from "class-validator";
|
import { IsInt, IsNotEmpty, IsObject, IsOptional, IsString } from "class-validator";
|
||||||
import { GroupContact } from '../entities/GroupContact';
|
|
||||||
import { RunnerGroup } from '../entities/RunnerGroup';
|
import { RunnerGroup } from '../entities/RunnerGroup';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
import { ResponseGroupContact } from './ResponseGroupContact';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runnerGroup response.
|
* Defines the runnerGroup response.
|
||||||
*/
|
*/
|
||||||
export abstract class ResponseRunnerGroup {
|
export abstract class ResponseRunnerGroup implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.RUNNERGROUP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runnerGroup's id.
|
* The runnerGroup's id.
|
||||||
*/
|
*/
|
||||||
|
@ -26,7 +34,7 @@ export abstract class ResponseRunnerGroup {
|
||||||
*/
|
*/
|
||||||
@IsObject()
|
@IsObject()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
contact?: GroupContact;
|
contact?: ResponseGroupContact;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ResponseRunnerGroup object from a runnerGroup.
|
* Creates a ResponseRunnerGroup object from a runnerGroup.
|
||||||
|
@ -35,6 +43,6 @@ export abstract class ResponseRunnerGroup {
|
||||||
public constructor(group: RunnerGroup) {
|
public constructor(group: RunnerGroup) {
|
||||||
this.id = group.id;
|
this.id = group.id;
|
||||||
this.name = group.name;
|
this.name = group.name;
|
||||||
this.contact = group.contact;
|
if (group.contact) { this.contact = group.contact.toResponse(); };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,13 +11,20 @@ import {
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Address } from '../entities/Address';
|
import { Address } from '../entities/Address';
|
||||||
import { RunnerOrganization } from '../entities/RunnerOrganization';
|
import { RunnerOrganization } from '../entities/RunnerOrganization';
|
||||||
import { RunnerTeam } from '../entities/RunnerTeam';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
|
import { ResponseRunnerTeam } from './ResponseRunnerTeam';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runnerOrganization response.
|
* Defines the runnerOrganization response.
|
||||||
*/
|
*/
|
||||||
export class ResponseRunnerOrganization extends ResponseRunnerGroup {
|
export class ResponseRunnerOrganization extends ResponseRunnerGroup implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.RUNNERORGANIZATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runnerOrganization's address.
|
* The runnerOrganization's address.
|
||||||
|
@ -30,7 +37,7 @@ export class ResponseRunnerOrganization extends ResponseRunnerGroup {
|
||||||
* The runnerOrganization associated teams.
|
* The runnerOrganization associated teams.
|
||||||
*/
|
*/
|
||||||
@IsArray()
|
@IsArray()
|
||||||
teams: RunnerTeam[];
|
teams: ResponseRunnerTeam[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The organization's registration key.
|
* The organization's registration key.
|
||||||
|
@ -55,7 +62,13 @@ export class ResponseRunnerOrganization extends ResponseRunnerGroup {
|
||||||
public constructor(org: RunnerOrganization) {
|
public constructor(org: RunnerOrganization) {
|
||||||
super(org);
|
super(org);
|
||||||
this.address = org.address;
|
this.address = org.address;
|
||||||
this.teams = org.teams;
|
this.teams = new Array<ResponseRunnerTeam>();
|
||||||
|
if (org.teams) {
|
||||||
|
for (let team of org.teams) {
|
||||||
|
this.teams.push(team.toResponse());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!org.key) { this.registrationEnabled = false; }
|
if (!org.key) { this.registrationEnabled = false; }
|
||||||
else { this.registrationKey = Buffer.from(org.key).toString('base64'); }
|
else { this.registrationKey = Buffer.from(org.key).toString('base64'); }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
import { IsNotEmpty, IsObject } from "class-validator";
|
import { IsNotEmpty, IsObject } from "class-validator";
|
||||||
import { RunnerTeam } from '../entities/RunnerTeam';
|
import { RunnerTeam } from '../entities/RunnerTeam';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
import { ResponseRunnerOrganization } from './ResponseRunnerOrganization';
|
import { ResponseRunnerOrganization } from './ResponseRunnerOrganization';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runnerTeam response.
|
* Defines the runnerTeam response.
|
||||||
*/
|
*/
|
||||||
export class ResponseRunnerTeam extends ResponseRunnerGroup {
|
export class ResponseRunnerTeam extends ResponseRunnerGroup implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.RUNNERTEAM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runnerTeam's parent group (organization).
|
* The runnerTeam's parent group (organization).
|
||||||
|
@ -21,6 +28,6 @@ export class ResponseRunnerTeam extends ResponseRunnerGroup {
|
||||||
*/
|
*/
|
||||||
public constructor(team: RunnerTeam) {
|
public constructor(team: RunnerTeam) {
|
||||||
super(team);
|
super(team);
|
||||||
this.parentGroup = team.parentGroup.toResponse();
|
if (team.parentGroup) { this.parentGroup = team.parentGroup.toResponse(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsBoolean, IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
import { IsBoolean, IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
||||||
import { Scan } from '../entities/Scan';
|
import { Scan } from '../entities/Scan';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunner } from './ResponseRunner';
|
import { ResponseRunner } from './ResponseRunner';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the scan response.
|
* Defines the scan response.
|
||||||
*/
|
*/
|
||||||
export class ResponseScan {
|
export class ResponseScan implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.SCAN;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The scans's id.
|
* The scans's id.
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +47,7 @@ export class ResponseScan {
|
||||||
*/
|
*/
|
||||||
public constructor(scan: Scan) {
|
public constructor(scan: Scan) {
|
||||||
this.id = scan.id;
|
this.id = scan.id;
|
||||||
this.runner = scan.runner.toResponse();
|
if (scan.runner) { this.runner = scan.runner.toResponse(); }
|
||||||
this.distance = scan.distance;
|
this.distance = scan.distance;
|
||||||
this.valid = scan.valid;
|
this.valid = scan.valid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,20 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { ScanStation } from '../entities/ScanStation';
|
import { ScanStation } from '../entities/ScanStation';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseTrack } from './ResponseTrack';
|
import { ResponseTrack } from './ResponseTrack';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the statsClient response.
|
* Defines the statsClient response.
|
||||||
*/
|
*/
|
||||||
export class ResponseScanStation {
|
export class ResponseScanStation implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.SCANSTATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The client's id.
|
* The client's id.
|
||||||
*/
|
*/
|
||||||
|
@ -64,7 +72,7 @@ export class ResponseScanStation {
|
||||||
this.description = station.description;
|
this.description = station.description;
|
||||||
this.prefix = station.prefix;
|
this.prefix = station.prefix;
|
||||||
this.key = "Only visible on creation.";
|
this.key = "Only visible on creation.";
|
||||||
this.track = station.track;
|
if (station.track) { this.track = station.track.toResponse(); }
|
||||||
this.enabled = station.enabled;
|
this.enabled = station.enabled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsInt, IsNotEmpty, IsPositive } from 'class-validator';
|
import { IsInt, IsNotEmpty, IsPositive } from 'class-validator';
|
||||||
import { DistanceDonation } from '../entities/DistanceDonation';
|
import { DistanceDonation } from '../entities/DistanceDonation';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runner selfservice donation response.
|
* Defines the runner selfservice donation response.
|
||||||
* Why? B/C runner's are not allowed to view all information available to admin users.
|
* Why? B/C runner's are not allowed to view all information available to admin users.
|
||||||
*/
|
*/
|
||||||
export class ResponseSelfServiceDonation {
|
export class ResponseSelfServiceDonation implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.SELFSERVICEDONATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The donation's donor.
|
* The donation's donor.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,6 +3,8 @@ import { DistanceDonation } from '../entities/DistanceDonation';
|
||||||
import { Runner } from '../entities/Runner';
|
import { Runner } from '../entities/Runner';
|
||||||
import { RunnerGroup } from '../entities/RunnerGroup';
|
import { RunnerGroup } from '../entities/RunnerGroup';
|
||||||
import { RunnerTeam } from '../entities/RunnerTeam';
|
import { RunnerTeam } from '../entities/RunnerTeam';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseParticipant } from './ResponseParticipant';
|
import { ResponseParticipant } from './ResponseParticipant';
|
||||||
import { ResponseSelfServiceDonation } from './ResponseSelfServiceDonation';
|
import { ResponseSelfServiceDonation } from './ResponseSelfServiceDonation';
|
||||||
|
|
||||||
|
@ -10,7 +12,12 @@ import { ResponseSelfServiceDonation } from './ResponseSelfServiceDonation';
|
||||||
* Defines the runner selfservice response.
|
* Defines the runner selfservice response.
|
||||||
* Why? B/C runner's are not allowed to view all information available to admin users.
|
* Why? B/C runner's are not allowed to view all information available to admin users.
|
||||||
*/
|
*/
|
||||||
export class ResponseSelfServiceRunner extends ResponseParticipant {
|
export class ResponseSelfServiceRunner extends ResponseParticipant implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.SELFSERVICERUNNER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runner's currently ran distance in meters.
|
* The runner's currently ran distance in meters.
|
||||||
|
|
|
@ -7,12 +7,20 @@ import { RunnerOrganization } from '../entities/RunnerOrganization';
|
||||||
import { RunnerTeam } from '../entities/RunnerTeam';
|
import { RunnerTeam } from '../entities/RunnerTeam';
|
||||||
import { Scan } from '../entities/Scan';
|
import { Scan } from '../entities/Scan';
|
||||||
import { User } from '../entities/User';
|
import { User } from '../entities/User';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the stats response.
|
* Defines the stats response.
|
||||||
* The stats response calculates some basic stats for a dashboard or public display.
|
* The stats response calculates some basic stats for a dashboard or public display.
|
||||||
*/
|
*/
|
||||||
export class ResponseStats {
|
export class ResponseStats implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.STATS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The amount of runners registered in the system.
|
* The amount of runners registered in the system.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,11 +8,19 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { StatsClient } from '../entities/StatsClient';
|
import { StatsClient } from '../entities/StatsClient';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the statsClient response.
|
* Defines the statsClient response.
|
||||||
*/
|
*/
|
||||||
export class ResponseStatsClient {
|
export class ResponseStatsClient implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.STATSCLIENT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The client's id.
|
* The client's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,12 +4,20 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { RunnerOrganization } from '../entities/RunnerOrganization';
|
import { RunnerOrganization } from '../entities/RunnerOrganization';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the org stats response.
|
* Defines the org stats response.
|
||||||
* This differs from the normal org responce.
|
* This differs from the normal org responce.
|
||||||
*/
|
*/
|
||||||
export class ResponseStatsOrgnisation {
|
export class ResponseStatsOrgnisation implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.STATSORGANIZATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The orgs's id.
|
* The orgs's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,13 +4,21 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Runner } from '../entities/Runner';
|
import { Runner } from '../entities/Runner';
|
||||||
import { RunnerGroup } from '../entities/RunnerGroup';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runner stats response.
|
* Defines the runner stats response.
|
||||||
* This differs from the normal runner responce.
|
* This differs from the normal runner responce.
|
||||||
*/
|
*/
|
||||||
export class ResponseStatsRunner {
|
export class ResponseStatsRunner implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.STATSRUNNER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runner's id.
|
* The runner's id.
|
||||||
*/
|
*/
|
||||||
|
@ -51,7 +59,7 @@ export class ResponseStatsRunner {
|
||||||
* The runner's group.
|
* The runner's group.
|
||||||
*/
|
*/
|
||||||
@IsObject()
|
@IsObject()
|
||||||
group: RunnerGroup;
|
group: ResponseRunnerGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new runner stats response from a runner
|
* Creates a new runner stats response from a runner
|
||||||
|
@ -64,6 +72,6 @@ export class ResponseStatsRunner {
|
||||||
this.lastname = runner.lastname;
|
this.lastname = runner.lastname;
|
||||||
this.distance = runner.distance;
|
this.distance = runner.distance;
|
||||||
this.donationAmount = runner.distanceDonationAmount;
|
this.donationAmount = runner.distanceDonationAmount;
|
||||||
this.group = runner.group;
|
this.group = runner.group.toResponse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,22 @@ import {
|
||||||
IsObject,
|
IsObject,
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { RunnerGroup } from '../entities/RunnerGroup';
|
|
||||||
import { RunnerTeam } from '../entities/RunnerTeam';
|
import { RunnerTeam } from '../entities/RunnerTeam';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
import { ResponseRunnerGroup } from './ResponseRunnerGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the team stats response.
|
* Defines the team stats response.
|
||||||
* This differs from the normal team responce.
|
* This differs from the normal team responce.
|
||||||
*/
|
*/
|
||||||
export class ResponseStatsTeam {
|
export class ResponseStatsTeam implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.STATSTEAM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The team's id.
|
* The team's id.
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +47,7 @@ export class ResponseStatsTeam {
|
||||||
* The teams's parent group.
|
* The teams's parent group.
|
||||||
*/
|
*/
|
||||||
@IsObject()
|
@IsObject()
|
||||||
parent: RunnerGroup;
|
parent: ResponseRunnerGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new team stats response from a team
|
* Creates a new team stats response from a team
|
||||||
|
@ -48,7 +56,7 @@ export class ResponseStatsTeam {
|
||||||
public constructor(team: RunnerTeam) {
|
public constructor(team: RunnerTeam) {
|
||||||
this.name = team.name;
|
this.name = team.name;
|
||||||
this.id = team.id;
|
this.id = team.id;
|
||||||
this.parent = team.parentGroup;
|
this.parent = team.parentGroup.toResponse();
|
||||||
this.distance = team.distance;
|
this.distance = team.distance;
|
||||||
this.donationAmount = team.distanceDonationAmount;
|
this.donationAmount = team.distanceDonationAmount;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
import { IsInt, IsOptional, IsString } from "class-validator";
|
import { IsInt, IsOptional, IsString } from "class-validator";
|
||||||
import { TrackLapTimeCantBeNegativeError } from '../../errors/TrackErrors';
|
import { TrackLapTimeCantBeNegativeError } from '../../errors/TrackErrors';
|
||||||
import { Track } from '../entities/Track';
|
import { Track } from '../entities/Track';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the track response.
|
* Defines the track response.
|
||||||
*/
|
*/
|
||||||
export class ResponseTrack {
|
export class ResponseTrack implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.TRACK;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The track's id.
|
* The track's id.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import { IsDateString, IsNotEmpty } from "class-validator";
|
import { IsDateString, IsNotEmpty } from "class-validator";
|
||||||
import { TrackScan } from '../entities/TrackScan';
|
import { TrackScan } from '../entities/TrackScan';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponseRunnerCard } from './ResponseRunnerCard';
|
import { ResponseRunnerCard } from './ResponseRunnerCard';
|
||||||
import { ResponseScan } from './ResponseScan';
|
import { ResponseScan } from './ResponseScan';
|
||||||
import { ResponseScanStation } from './ResponseScanStation';
|
import { ResponseScanStation } from './ResponseScanStation';
|
||||||
|
@ -8,10 +10,16 @@ import { ResponseTrack } from './ResponseTrack';
|
||||||
/**
|
/**
|
||||||
* Defines the trackScan response.
|
* Defines the trackScan response.
|
||||||
*/
|
*/
|
||||||
export class ResponseTrackScan extends ResponseScan {
|
export class ResponseTrackScan extends ResponseScan implements IResponse {
|
||||||
/**
|
/**
|
||||||
* The scan's associated track.
|
* The responseType.
|
||||||
*/
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.TRACKSCAN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The scan's associated track.
|
||||||
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
track: ResponseTrack;
|
track: ResponseTrack;
|
||||||
|
|
||||||
|
@ -41,8 +49,8 @@ export class ResponseTrackScan extends ResponseScan {
|
||||||
public constructor(scan: TrackScan) {
|
public constructor(scan: TrackScan) {
|
||||||
super(scan);
|
super(scan);
|
||||||
this.track = new ResponseTrack(scan.track);
|
this.track = new ResponseTrack(scan.track);
|
||||||
this.card = scan.card.toResponse();
|
if (scan.card) { scan.card.toResponse(); }
|
||||||
this.station = scan.station.toResponse();
|
if (scan.station) { scan.station.toResponse(); }
|
||||||
this.timestamp = scan.timestamp;
|
this.timestamp = scan.timestamp;
|
||||||
this.distance = scan.distance;
|
this.distance = scan.distance;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,13 +6,21 @@ import {
|
||||||
IsString
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { User } from '../entities/User';
|
import { User } from '../entities/User';
|
||||||
import { UserGroup } from '../entities/UserGroup';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponsePrincipal } from './ResponsePrincipal';
|
import { ResponsePrincipal } from './ResponsePrincipal';
|
||||||
|
import { ResponseUserGroup } from './ResponseUserGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the user response.
|
* Defines the user response.
|
||||||
*/
|
*/
|
||||||
export class ResponseUser extends ResponsePrincipal {
|
export class ResponseUser extends ResponsePrincipal implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.USER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The user's first name.
|
* The user's first name.
|
||||||
*/
|
*/
|
||||||
|
@ -66,7 +74,7 @@ export class ResponseUser extends ResponsePrincipal {
|
||||||
*/
|
*/
|
||||||
@IsArray()
|
@IsArray()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
groups: UserGroup[];
|
groups: ResponseUserGroup[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The user's permissions.
|
* The user's permissions.
|
||||||
|
@ -90,10 +98,13 @@ export class ResponseUser extends ResponsePrincipal {
|
||||||
this.username = user.username;
|
this.username = user.username;
|
||||||
this.enabled = user.enabled;
|
this.enabled = user.enabled;
|
||||||
this.profilePic = user.profilePic;
|
this.profilePic = user.profilePic;
|
||||||
this.groups = user.groups;
|
this.groups = new Array<ResponseUserGroup>();
|
||||||
this.permissions = user.allPermissions;
|
this.permissions = user.allPermissions;
|
||||||
if (this.groups) {
|
if (user.groups) {
|
||||||
this.groups.forEach(function (g) { delete g.permissions });
|
for (let group of user.groups) {
|
||||||
|
delete group.permissions;
|
||||||
|
this.groups.push(group.toResponse());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
import { IsArray, IsNotEmpty, IsOptional, IsString } from "class-validator";
|
import { IsArray, IsNotEmpty, IsOptional, IsString } from "class-validator";
|
||||||
import { Permission } from '../entities/Permission';
|
|
||||||
import { UserGroup } from '../entities/UserGroup';
|
import { UserGroup } from '../entities/UserGroup';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
|
import { ResponsePermission } from './ResponsePermission';
|
||||||
import { ResponsePrincipal } from './ResponsePrincipal';
|
import { ResponsePrincipal } from './ResponsePrincipal';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the userGroup response.
|
* Defines the userGroup response.
|
||||||
*/
|
*/
|
||||||
export class ResponseUserGroup extends ResponsePrincipal {
|
export class ResponseUserGroup extends ResponsePrincipal implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.USERGROUP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The userGroup's name.
|
* The userGroup's name.
|
||||||
*/
|
*/
|
||||||
|
@ -26,7 +34,7 @@ export class ResponseUserGroup extends ResponsePrincipal {
|
||||||
*/
|
*/
|
||||||
@IsArray()
|
@IsArray()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
permissions: Permission[];
|
permissions: ResponsePermission[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ResponseUserGroup object from a userGroup.
|
* Creates a ResponseUserGroup object from a userGroup.
|
||||||
|
@ -36,6 +44,10 @@ export class ResponseUserGroup extends ResponsePrincipal {
|
||||||
super(group);
|
super(group);
|
||||||
this.name = group.name;
|
this.name = group.name;
|
||||||
this.description = group.description;
|
this.description = group.description;
|
||||||
this.permissions = group.permissions;
|
if (group.permissions) {
|
||||||
|
for (let permission of group.permissions) {
|
||||||
|
this.permissions.push(permission.toResponse());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,20 @@ import {
|
||||||
IsOptional
|
IsOptional
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { User } from '../entities/User';
|
import { User } from '../entities/User';
|
||||||
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
|
import { IResponse } from './IResponse';
|
||||||
import { ResponsePermission } from './ResponsePermission';
|
import { ResponsePermission } from './ResponsePermission';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the user permission response (get /api/users/:id/permissions).
|
* Defines the user permission response (get /api/users/:id/permissions).
|
||||||
*/
|
*/
|
||||||
export class ResponseUserPermissions {
|
export class ResponseUserPermissions implements IResponse {
|
||||||
|
/**
|
||||||
|
* The responseType.
|
||||||
|
* This contains the type of class/entity this response contains.
|
||||||
|
*/
|
||||||
|
responseType: ResponseObjectType = ResponseObjectType.USERPERMISSIONS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The permissions directly granted to the user.
|
* The permissions directly granted to the user.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,7 +34,8 @@ describe('POST /api/cards successfully (without runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": null,
|
"runner": null,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a disabled card should return 200', async () => {
|
it('creating a disabled card should return 200', async () => {
|
||||||
|
@ -47,7 +48,8 @@ describe('POST /api/cards successfully (without runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": null,
|
"runner": null,
|
||||||
"enabled": false
|
"enabled": false,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a enabled card should return 200', async () => {
|
it('creating a enabled card should return 200', async () => {
|
||||||
|
@ -60,7 +62,8 @@ describe('POST /api/cards successfully (without runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": null,
|
"runner": null,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -97,7 +100,8 @@ describe('POST /api/cards successfully (with runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a card with runner (no optional params) should return 200', async () => {
|
it('creating a card with runner (no optional params) should return 200', async () => {
|
||||||
|
@ -110,7 +114,8 @@ describe('POST /api/cards successfully (with runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a enabled card with runner should return 200', async () => {
|
it('creating a enabled card with runner should return 200', async () => {
|
||||||
|
@ -124,7 +129,8 @@ describe('POST /api/cards successfully (with runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a disabled card with runner should return 200', async () => {
|
it('creating a disabled card with runner should return 200', async () => {
|
||||||
|
@ -138,7 +144,8 @@ describe('POST /api/cards successfully (with runner)', () => {
|
||||||
delete res.data.code;
|
delete res.data.code;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"enabled": false
|
"enabled": false,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -96,7 +96,8 @@ describe('adding + updating card.runner successfully', () => {
|
||||||
"id": added_card.id,
|
"id": added_card.id,
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"code": added_card.code
|
"code": added_card.code,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid runner update (change runner) should return 200', async () => {
|
it('valid runner update (change runner) should return 200', async () => {
|
||||||
|
@ -110,7 +111,8 @@ describe('adding + updating card.runner successfully', () => {
|
||||||
"id": added_card.id,
|
"id": added_card.id,
|
||||||
"runner": added_runner2,
|
"runner": added_runner2,
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"code": added_card.code
|
"code": added_card.code,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -142,7 +144,8 @@ describe('adding + updating other values successfully', () => {
|
||||||
"id": added_card.id,
|
"id": added_card.id,
|
||||||
"runner": null,
|
"runner": null,
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"code": added_card.code
|
"code": added_card.code,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid enable update should return 200', async () => {
|
it('valid enable update should return 200', async () => {
|
||||||
|
@ -156,7 +159,8 @@ describe('adding + updating other values successfully', () => {
|
||||||
"id": added_card.id,
|
"id": added_card.id,
|
||||||
"runner": null,
|
"runner": null,
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"code": added_card.code
|
"code": added_card.code,
|
||||||
|
"responseType": "RUNNERCARD"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -136,6 +136,7 @@ describe('POST /api/contacts working (with group)', () => {
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
|
delete res.data.groups[0].teams;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"firstname": "first",
|
"firstname": "first",
|
||||||
"middlename": null,
|
"middlename": null,
|
||||||
|
@ -149,7 +150,8 @@ describe('POST /api/contacts working (with group)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_org]
|
"groups": [added_org],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a new contact with a valid team should return 200', async () => {
|
it('creating a new contact with a valid team should return 200', async () => {
|
||||||
|
@ -174,7 +176,8 @@ describe('POST /api/contacts working (with group)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_team]
|
"groups": [added_team],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a new contact with a valid org and team should return 200', async () => {
|
it('creating a new contact with a valid org and team should return 200', async () => {
|
||||||
|
@ -187,6 +190,7 @@ describe('POST /api/contacts working (with group)', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
added_contact = res.data
|
added_contact = res.data
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
|
delete res.data.groups[0].teams;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"firstname": "first",
|
"firstname": "first",
|
||||||
"middlename": null,
|
"middlename": null,
|
||||||
|
@ -200,7 +204,8 @@ describe('POST /api/contacts working (with group)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_org, added_team]
|
"groups": [added_org, added_team],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('checking if the added team\'s contact is the new contact should return 200', async () => {
|
it('checking if the added team\'s contact is the new contact should return 200', async () => {
|
||||||
|
|
|
@ -86,7 +86,8 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
}, axios_config);
|
}, axios_config);
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
added_contact = res.data
|
added_contact = res.data;
|
||||||
|
delete res.data.groups[0].teams;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": res.data.id,
|
"id": res.data.id,
|
||||||
"firstname": "first",
|
"firstname": "first",
|
||||||
|
@ -101,7 +102,8 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_org]
|
"groups": [added_org],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid group update to single team should return 200', async () => {
|
it('valid group update to single team should return 200', async () => {
|
||||||
|
@ -127,7 +129,8 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_team]
|
"groups": [added_team],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid group update to org and team should return 200', async () => {
|
it('valid group update to org and team should return 200', async () => {
|
||||||
|
@ -139,6 +142,7 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
}, axios_config);
|
}, axios_config);
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
|
delete res.data.groups[0].teams;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": res.data.id,
|
"id": res.data.id,
|
||||||
"firstname": "first",
|
"firstname": "first",
|
||||||
|
@ -153,7 +157,8 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_org, added_team]
|
"groups": [added_org, added_team],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid group update to none should return 200', async () => {
|
it('valid group update to none should return 200', async () => {
|
||||||
|
@ -179,7 +184,8 @@ describe('Update contact group after adding (should work)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": []
|
"groups": [],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -206,6 +212,7 @@ describe('Update contact group invalid after adding (should fail)', () => {
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
added_contact = res.data
|
added_contact = res.data
|
||||||
|
delete res.data.groups[0].teams;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": res.data.id,
|
"id": res.data.id,
|
||||||
"firstname": "first",
|
"firstname": "first",
|
||||||
|
@ -220,7 +227,8 @@ describe('Update contact group invalid after adding (should fail)', () => {
|
||||||
"city": null,
|
"city": null,
|
||||||
"country": null
|
"country": null
|
||||||
},
|
},
|
||||||
"groups": [added_org]
|
"groups": [added_org],
|
||||||
|
"responseType": "GROUPCONTACT"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('invalid group update to single team should return 404', async () => {
|
it('invalid group update to single team should return 404', async () => {
|
||||||
|
|
|
@ -179,7 +179,8 @@ describe('POST /api/donations/fixed successfully', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"donor": added_donor,
|
"donor": added_donor,
|
||||||
"amount": 1000
|
"amount": 1000,
|
||||||
|
"responseType": "DONATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -230,7 +231,8 @@ describe('POST /api/donations/distance successfully', () => {
|
||||||
"donor": added_donor,
|
"donor": added_donor,
|
||||||
"amountPerDistance": 100,
|
"amountPerDistance": 100,
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"amount": 0
|
"amount": 0,
|
||||||
|
"responseType": "DISTANCEDONATION"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -323,7 +323,6 @@ describe('adding + updating distance donation valid', () => {
|
||||||
"amountPerDistance": 69,
|
"amountPerDistance": 69,
|
||||||
"donor": added_donor.id
|
"donor": added_donor.id
|
||||||
}, axios_config);
|
}, axios_config);
|
||||||
delete res.data.runner.group;
|
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
expect(res.data.runner).toEqual(added_runner2);
|
expect(res.data.runner).toEqual(added_runner2);
|
||||||
|
|
|
@ -55,7 +55,6 @@ describe('adding + getting from all orgs', () => {
|
||||||
delete added_org.id
|
delete added_org.id
|
||||||
expect(added_org).toEqual({
|
expect(added_org).toEqual({
|
||||||
"name": "test123",
|
"name": "test123",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -64,7 +63,8 @@ describe('adding + getting from all orgs', () => {
|
||||||
"postalcode": null,
|
"postalcode": null,
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -89,7 +89,6 @@ describe('adding + getting explicitly', () => {
|
||||||
delete added_org2.id
|
delete added_org2.id
|
||||||
expect(added_org2).toEqual({
|
expect(added_org2).toEqual({
|
||||||
"name": "test123",
|
"name": "test123",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -98,7 +97,8 @@ describe('adding + getting explicitly', () => {
|
||||||
"postalcode": null,
|
"postalcode": null,
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -43,7 +43,6 @@ describe('adding + deletion (successfull)', () => {
|
||||||
delete added_org2.id
|
delete added_org2.id
|
||||||
expect(added_org2).toEqual({
|
expect(added_org2).toEqual({
|
||||||
"name": "test123",
|
"name": "test123",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -52,7 +51,8 @@ describe('adding + deletion (successfull)', () => {
|
||||||
"postalcode": null,
|
"postalcode": null,
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('check if org really was deleted', async () => {
|
it('check if org really was deleted', async () => {
|
||||||
|
@ -127,7 +127,6 @@ describe('adding + deletion with teams still existing (with force)', () => {
|
||||||
delete added_org2.teams;
|
delete added_org2.teams;
|
||||||
expect(added_org2).toEqual({
|
expect(added_org2).toEqual({
|
||||||
"name": "test123",
|
"name": "test123",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -136,6 +135,7 @@ describe('adding + deletion with teams still existing (with force)', () => {
|
||||||
"postalcode": null,
|
"postalcode": null,
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('check if org really was deleted', async () => {
|
it('check if org really was deleted', async () => {
|
||||||
|
|
|
@ -41,7 +41,6 @@ describe('adding + updating name', () => {
|
||||||
delete added_org2.id
|
delete added_org2.id
|
||||||
expect(added_org2).toEqual({
|
expect(added_org2).toEqual({
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -50,7 +49,8 @@ describe('adding + updating name', () => {
|
||||||
"postalcode": null,
|
"postalcode": null,
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -109,7 +109,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test1",
|
"address1": "Test1",
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -118,7 +117,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "90174"
|
"postalcode": "90174"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('updateing address\'s first line should return 200', async () => {
|
it('updateing address\'s first line should return 200', async () => {
|
||||||
|
@ -139,7 +139,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test2",
|
"address1": "Test2",
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -148,7 +147,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "90174"
|
"postalcode": "90174"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('updateing address\'s second line should return 200', async () => {
|
it('updateing address\'s second line should return 200', async () => {
|
||||||
|
@ -169,7 +169,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test2",
|
"address1": "Test2",
|
||||||
"address2": "Test3",
|
"address2": "Test3",
|
||||||
|
@ -178,7 +177,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "90174"
|
"postalcode": "90174"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('updateing address\'s city should return 200', async () => {
|
it('updateing address\'s city should return 200', async () => {
|
||||||
|
@ -199,7 +199,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test2",
|
"address1": "Test2",
|
||||||
"address2": "Test3",
|
"address2": "Test3",
|
||||||
|
@ -208,7 +207,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "90174"
|
"postalcode": "90174"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('updateing address\'s country should return 200', async () => {
|
it('updateing address\'s country should return 200', async () => {
|
||||||
|
@ -229,7 +229,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test2",
|
"address1": "Test2",
|
||||||
"address2": "Test3",
|
"address2": "Test3",
|
||||||
|
@ -238,7 +237,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "90174"
|
"postalcode": "90174"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('updateing address\'s postal code should return 200', async () => {
|
it('updateing address\'s postal code should return 200', async () => {
|
||||||
|
@ -259,7 +259,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": "Test2",
|
"address1": "Test2",
|
||||||
"address2": "Test3",
|
"address2": "Test3",
|
||||||
|
@ -268,7 +267,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": "91065"
|
"postalcode": "91065"
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('removing org\'s address should return 200', async () => {
|
it('removing org\'s address should return 200', async () => {
|
||||||
|
@ -282,7 +282,6 @@ describe('adding + updateing address valid)', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"id": added_org_id,
|
"id": added_org_id,
|
||||||
"name": "testlelele",
|
"name": "testlelele",
|
||||||
"contact": null,
|
|
||||||
"address": {
|
"address": {
|
||||||
"address1": null,
|
"address1": null,
|
||||||
"address2": null,
|
"address2": null,
|
||||||
|
@ -291,7 +290,8 @@ describe('adding + updateing address valid)', () => {
|
||||||
"postalcode": null
|
"postalcode": null
|
||||||
},
|
},
|
||||||
"registrationEnabled": false,
|
"registrationEnabled": false,
|
||||||
"teams": []
|
"teams": [],
|
||||||
|
"responseType": "RUNNERORGANIZATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -48,7 +48,7 @@ describe('adding org', () => {
|
||||||
delete deleted_team.parentGroup;
|
delete deleted_team.parentGroup;
|
||||||
expect(deleted_team).toEqual({
|
expect(deleted_team).toEqual({
|
||||||
"name": "test123",
|
"name": "test123",
|
||||||
"contact": null
|
"responseType": "RUNNERTEAM"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('check if team really was deleted', async () => {
|
it('check if team really was deleted', async () => {
|
||||||
|
|
|
@ -127,6 +127,7 @@ describe('add+update parent org (valid)', () => {
|
||||||
delete added_org2.registrationEnabled;
|
delete added_org2.registrationEnabled;
|
||||||
delete res4.data.parentGroup.key;
|
delete res4.data.parentGroup.key;
|
||||||
delete res4.data.parentGroup.registrationEnabled;
|
delete res4.data.parentGroup.registrationEnabled;
|
||||||
|
delete res4.data.parentGroup.teams;
|
||||||
expect(res4.data.parentGroup).toEqual(added_org2)
|
expect(res4.data.parentGroup).toEqual(added_org2)
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -129,7 +129,7 @@ describe('GET /api/teams/:id/runners after adding', () => {
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json")
|
expect(res.headers['content-type']).toContain("application/json")
|
||||||
});
|
});
|
||||||
it('check if scans was added via the orgs/runners endpoint.', async () => {
|
it('check if runner was added via the teams/runners endpoint.', async () => {
|
||||||
const res = await axios.get(base + '/api/teams/' + added_team.id + "/runners", axios_config);
|
const res = await axios.get(base + '/api/teams/' + added_team.id + "/runners", axios_config);
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
|
|
|
@ -49,6 +49,7 @@ describe('Update runner name after adding', () => {
|
||||||
delete res3.data.group.key;
|
delete res3.data.group.key;
|
||||||
delete res3.data.group.registrationEnabled;
|
delete res3.data.group.registrationEnabled;
|
||||||
delete runnercopy.group.registrationEnabled;
|
delete runnercopy.group.registrationEnabled;
|
||||||
|
delete res3.data.group.teams;
|
||||||
expect(res3.data).toEqual(runnercopy);
|
expect(res3.data).toEqual(runnercopy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -94,6 +95,7 @@ describe('Update runner group after adding', () => {
|
||||||
expect(res3.headers['content-type']).toContain("application/json")
|
expect(res3.headers['content-type']).toContain("application/json")
|
||||||
delete res3.data.group.key;
|
delete res3.data.group.key;
|
||||||
delete res3.data.group.registrationEnabled;
|
delete res3.data.group.registrationEnabled;
|
||||||
|
delete res3.data.group.teams;
|
||||||
expect(res3.data.group).toEqual(added_org_2);
|
expect(res3.data.group).toEqual(added_org_2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -98,10 +98,12 @@ describe('POST /api/scans successfully', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": true
|
"valid": true,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a valid scan should return 200', async () => {
|
it('creating a valid scan should return 200', async () => {
|
||||||
|
@ -114,10 +116,12 @@ describe('POST /api/scans successfully', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": true
|
"valid": true,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a invalid scan should return 200', async () => {
|
it('creating a invalid scan should return 200', async () => {
|
||||||
|
@ -130,10 +134,12 @@ describe('POST /api/scans successfully', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": false
|
"valid": false,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -192,10 +198,12 @@ describe('POST /api/scans successfully via scan station', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": true
|
"valid": true,
|
||||||
|
"responseType": "SCAN",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a valid scan should return 200', async () => {
|
it('creating a valid scan should return 200', async () => {
|
||||||
|
@ -211,10 +219,12 @@ describe('POST /api/scans successfully via scan station', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": true
|
"valid": true,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a invalid scan should return 200', async () => {
|
it('creating a invalid scan should return 200', async () => {
|
||||||
|
@ -230,10 +240,12 @@ describe('POST /api/scans successfully via scan station', () => {
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
delete res.data.id;
|
delete res.data.id;
|
||||||
delete res.data.runner.distance;
|
delete res.data.runner.distance;
|
||||||
|
delete res.data.runner.group;
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"valid": false
|
"valid": false,
|
||||||
|
"responseType": "SCAN",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -72,6 +72,7 @@ describe('adding + getting scans', () => {
|
||||||
expect(res.status).toEqual(200);
|
expect(res.status).toEqual(200);
|
||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
added_scan.runner.distance = 0;
|
added_scan.runner.distance = 0;
|
||||||
|
delete added_scan.runner.group;
|
||||||
expect(res.data).toContainEqual(added_scan);
|
expect(res.data).toContainEqual(added_scan);
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -123,12 +123,13 @@ describe('adding + updating successfilly', () => {
|
||||||
expect(res2.status).toEqual(200);
|
expect(res2.status).toEqual(200);
|
||||||
expect(res2.headers['content-type']).toContain("application/json")
|
expect(res2.headers['content-type']).toContain("application/json")
|
||||||
delete res2.data.runner.distance;
|
delete res2.data.runner.distance;
|
||||||
|
delete res2.data.runner.group;
|
||||||
expect(res2.data).toEqual({
|
expect(res2.data).toEqual({
|
||||||
"id": added_scan.id,
|
"id": added_scan.id,
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 100,
|
"distance": 100,
|
||||||
"valid": true
|
"valid": true,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('valid valid update should return 200', async () => {
|
it('valid valid update should return 200', async () => {
|
||||||
|
@ -141,11 +142,13 @@ describe('adding + updating successfilly', () => {
|
||||||
expect(res2.status).toEqual(200);
|
expect(res2.status).toEqual(200);
|
||||||
expect(res2.headers['content-type']).toContain("application/json");
|
expect(res2.headers['content-type']).toContain("application/json");
|
||||||
delete res2.data.runner.distance;
|
delete res2.data.runner.distance;
|
||||||
|
delete res2.data.runner.group;
|
||||||
expect(res2.data).toEqual({
|
expect(res2.data).toEqual({
|
||||||
"id": added_scan.id,
|
"id": added_scan.id,
|
||||||
"runner": added_runner,
|
"runner": added_runner,
|
||||||
"distance": 100,
|
"distance": 100,
|
||||||
"valid": false
|
"valid": false,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a new runner with only needed params should return 200', async () => {
|
it('creating a new runner with only needed params should return 200', async () => {
|
||||||
|
@ -169,11 +172,13 @@ describe('adding + updating successfilly', () => {
|
||||||
expect(res2.status).toEqual(200);
|
expect(res2.status).toEqual(200);
|
||||||
expect(res2.headers['content-type']).toContain("application/json");
|
expect(res2.headers['content-type']).toContain("application/json");
|
||||||
delete res2.data.runner.distance;
|
delete res2.data.runner.distance;
|
||||||
|
delete res2.data.runner.group;
|
||||||
expect(res2.data).toEqual({
|
expect(res2.data).toEqual({
|
||||||
"id": added_scan.id,
|
"id": added_scan.id,
|
||||||
"runner": added_runner2,
|
"runner": added_runner2,
|
||||||
"distance": added_scan.distance,
|
"distance": added_scan.distance,
|
||||||
"valid": added_scan.valid
|
"valid": added_scan.valid,
|
||||||
|
"responseType": "SCAN"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -56,7 +56,8 @@ describe('POST /api/stations successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"track": added_track,
|
"track": added_track,
|
||||||
"description": null,
|
"description": null,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "SCANSTATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a station with all parameters (optional set to true/empty) should return 200', async () => {
|
it('creating a station with all parameters (optional set to true/empty) should return 200', async () => {
|
||||||
|
@ -73,7 +74,8 @@ describe('POST /api/stations successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"track": added_track,
|
"track": added_track,
|
||||||
"description": null,
|
"description": null,
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "SCANSTATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a disabled station with all parameters (optional set to true/empty) should return 200', async () => {
|
it('creating a disabled station with all parameters (optional set to true/empty) should return 200', async () => {
|
||||||
|
@ -90,7 +92,8 @@ describe('POST /api/stations successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"track": added_track,
|
"track": added_track,
|
||||||
"description": null,
|
"description": null,
|
||||||
"enabled": false
|
"enabled": false,
|
||||||
|
"responseType": "SCANSTATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('creating a station with all parameters (optional set) should return 200', async () => {
|
it('creating a station with all parameters (optional set) should return 200', async () => {
|
||||||
|
@ -107,7 +110,8 @@ describe('POST /api/stations successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"track": added_track,
|
"track": added_track,
|
||||||
"description": "test station for testing",
|
"description": "test station for testing",
|
||||||
"enabled": true
|
"enabled": true,
|
||||||
|
"responseType": "SCANSTATION"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -54,7 +54,8 @@ describe('POST /api/tracks successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"name": "testtrack",
|
"name": "testtrack",
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"minimumLapTime": null
|
"minimumLapTime": null,
|
||||||
|
"responseType": "TRACK"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
it('creating a track with all parameters (optional set to null) should return 200', async () => {
|
it('creating a track with all parameters (optional set to null) should return 200', async () => {
|
||||||
|
@ -69,7 +70,8 @@ describe('POST /api/tracks successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"name": "testtrack",
|
"name": "testtrack",
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"minimumLapTime": null
|
"minimumLapTime": null,
|
||||||
|
"responseType": "TRACK"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
it('creating a track with all parameters should return 200', async () => {
|
it('creating a track with all parameters should return 200', async () => {
|
||||||
|
@ -84,7 +86,8 @@ describe('POST /api/tracks successfully', () => {
|
||||||
expect(res.data).toEqual({
|
expect(res.data).toEqual({
|
||||||
"name": "testtrack",
|
"name": "testtrack",
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"minimumLapTime": 123
|
"minimumLapTime": 123,
|
||||||
|
"responseType": "TRACK"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -35,7 +35,8 @@ describe('DETELE track', () => {
|
||||||
expect(res2.data).toEqual({
|
expect(res2.data).toEqual({
|
||||||
"name": "testtrack",
|
"name": "testtrack",
|
||||||
"distance": 200,
|
"distance": 200,
|
||||||
"minimumLapTime": null
|
"minimumLapTime": null,
|
||||||
|
"responseType": "TRACK"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('check if track really was deleted', async () => {
|
it('check if track really was deleted', async () => {
|
||||||
|
|
Loading…
Reference in New Issue