Compare commits

..

No commits in common. "6e5f1bd5ff217a88ec2dfaf154e5e26dee588e12" and "02295346dad109745faa492dc968abbc98522804" have entirely different histories.

53 changed files with 139 additions and 482 deletions

View File

@ -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.distanceDonationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse(); return (await this.donationRepository.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.distanceDonationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse(); return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse();
} }
@Delete('/:id') @Delete('/:id')

View File

@ -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.group', 'runner.scans.track', 'card', 'station'] }); const scans = await this.scanRepository.find({ relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] }) let scan = await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] })).toResponse(); return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] })).toResponse(); return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] })).toResponse(); return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] })).toResponse(); return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', '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.group', 'runner.scans.track', 'card', 'station'] }); const responseScan = await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] });
await this.scanRepository.delete(scan); await this.scanRepository.delete(scan);
return responseScan.toResponse(); return responseScan.toResponse();

View File

@ -4,6 +4,7 @@ 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';
@ -33,7 +34,7 @@ export class UserGroup extends Principal {
/** /**
* Turns this entity into it's response class. * Turns this entity into it's response class.
*/ */
public toResponse(): ResponseUserGroup { public toResponse(): ResponsePrincipal {
return new ResponseUserGroup(this); return new ResponseUserGroup(this);
} }
} }

View File

@ -1,34 +0,0 @@
/**
* 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',
}

View File

@ -1,13 +0,0 @@
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;
}

View File

@ -1,18 +1,9 @@
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 implements IResponse { export class ResponseAuth {
/**
* 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.
*/ */

View File

@ -1,19 +1,12 @@
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 implements IResponse { export class ResponseDistanceDonation extends ResponseDonation {
/**
* 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.
@ -36,7 +29,7 @@ export class ResponseDistanceDonation extends ResponseDonation implements IRespo
*/ */
public constructor(donation: DistanceDonation) { public constructor(donation: DistanceDonation) {
super(donation); super(donation);
if (donation.runner) { this.runner = donation.runner.toResponse(); } this.runner = donation.runner.toResponse();
this.amountPerDistance = donation.amountPerDistance; this.amountPerDistance = donation.amountPerDistance;
} }
} }

View File

@ -1,20 +1,11 @@
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 implements IResponse { export class ResponseDonation {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.DONATION;
/** /**
* The donation's id. * The donation's id.
*/ */

View File

@ -2,19 +2,12 @@ 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 implements IResponse { export class ResponseDonor extends ResponseParticipant {
/**
* 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?

View File

@ -1,17 +1,9 @@
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 implements IResponse { export class ResponseEmpty {
/**
* 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"
} }

View File

@ -1,20 +1,12 @@
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 implements IResponse { export class ResponseGroupContact {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.GROUPCONTACT;
/** /**
* The contact's id. * The contact's id.
*/ */
@ -77,10 +69,8 @@ export class ResponseGroupContact implements IResponse {
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>();
if (contact.groups) {
for (let group of contact.groups) { for (let group of contact.groups) {
this.groups.push(group.toResponse()); this.groups.push(group.toResponse());
} }
} }
} }
}

View File

@ -1,17 +1,9 @@
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 implements IResponse { export class Logout {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.LOGOUT;
/** /**
* The logout's timestamp. * The logout's timestamp.
*/ */

View File

@ -1,19 +1,11 @@
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 implements IResponse { export abstract class ResponseParticipant {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.PARTICIPANT;
/** /**
* The participant's id. * The participant's id.
*/ */

View File

@ -7,20 +7,12 @@ 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 implements IResponse { export class ResponsePermission {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.PERMISSION;
/** /**
* The permission's id. * The permission's id.
*/ */

View File

@ -2,19 +2,11 @@ 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 implements IResponse { export abstract class ResponsePrincipal {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.PRINCIPAL;
/** /**
* The principal's id. * The principal's id.

View File

@ -3,20 +3,13 @@ import {
IsObject IsObject
} from "class-validator"; } from "class-validator";
import { Runner } from '../entities/Runner'; import { Runner } from '../entities/Runner';
import { ResponseObjectType } from '../enums/ResponseObjectType'; import { RunnerGroup } from '../entities/RunnerGroup';
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 implements IResponse { export class ResponseRunner extends ResponseParticipant {
/**
* 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.
@ -28,7 +21,7 @@ export class ResponseRunner extends ResponseParticipant implements IResponse {
* The runner's group. * The runner's group.
*/ */
@IsObject() @IsObject()
group: ResponseRunnerGroup; group: RunnerGroup;
/** /**
* Creates a ResponseRunner object from a runner. * Creates a ResponseRunner object from a runner.
@ -38,6 +31,6 @@ export class ResponseRunner extends ResponseParticipant implements IResponse {
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); }
if (runner.group) { this.group = runner.group.toResponse(); } this.group = runner.group;
} }
} }

View File

@ -1,19 +1,11 @@
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 implements IResponse { export class ResponseRunnerCard {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.RUNNERCARD;
/** /**
* The card's id. * The card's id.
*/ */

View File

@ -1,19 +1,11 @@
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 implements IResponse { export abstract class ResponseRunnerGroup {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.RUNNERGROUP;
/** /**
* The runnerGroup's id. * The runnerGroup's id.
*/ */
@ -34,7 +26,7 @@ export abstract class ResponseRunnerGroup implements IResponse {
*/ */
@IsObject() @IsObject()
@IsOptional() @IsOptional()
contact?: ResponseGroupContact; contact?: GroupContact;
/** /**
* Creates a ResponseRunnerGroup object from a runnerGroup. * Creates a ResponseRunnerGroup object from a runnerGroup.
@ -43,6 +35,6 @@ export abstract class ResponseRunnerGroup implements IResponse {
public constructor(group: RunnerGroup) { public constructor(group: RunnerGroup) {
this.id = group.id; this.id = group.id;
this.name = group.name; this.name = group.name;
if (group.contact) { this.contact = group.contact.toResponse(); }; this.contact = group.contact;
} }
} }

View File

@ -11,20 +11,13 @@ 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 { ResponseObjectType } from '../enums/ResponseObjectType'; import { RunnerTeam } from '../entities/RunnerTeam';
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 implements IResponse { export class ResponseRunnerOrganization extends ResponseRunnerGroup {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.RUNNERORGANIZATION;
/** /**
* The runnerOrganization's address. * The runnerOrganization's address.
@ -37,7 +30,7 @@ export class ResponseRunnerOrganization extends ResponseRunnerGroup implements I
* The runnerOrganization associated teams. * The runnerOrganization associated teams.
*/ */
@IsArray() @IsArray()
teams: ResponseRunnerTeam[]; teams: RunnerTeam[];
/** /**
* The organization's registration key. * The organization's registration key.
@ -62,13 +55,7 @@ export class ResponseRunnerOrganization extends ResponseRunnerGroup implements I
public constructor(org: RunnerOrganization) { public constructor(org: RunnerOrganization) {
super(org); super(org);
this.address = org.address; this.address = org.address;
this.teams = new Array<ResponseRunnerTeam>(); this.teams = org.teams;
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'); }
} }

View File

@ -1,19 +1,12 @@
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 implements IResponse { export class ResponseRunnerTeam extends ResponseRunnerGroup {
/**
* 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).
@ -28,6 +21,6 @@ export class ResponseRunnerTeam extends ResponseRunnerGroup implements IResponse
*/ */
public constructor(team: RunnerTeam) { public constructor(team: RunnerTeam) {
super(team); super(team);
if (team.parentGroup) { this.parentGroup = team.parentGroup.toResponse(); } this.parentGroup = team.parentGroup.toResponse();
} }
} }

View File

@ -1,19 +1,11 @@
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 implements IResponse { export class ResponseScan {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.SCAN;
/** /**
* The scans's id. * The scans's id.
*/ */
@ -47,7 +39,7 @@ export class ResponseScan implements IResponse {
*/ */
public constructor(scan: Scan) { public constructor(scan: Scan) {
this.id = scan.id; this.id = scan.id;
if (scan.runner) { this.runner = scan.runner.toResponse(); } this.runner = scan.runner.toResponse();
this.distance = scan.distance; this.distance = scan.distance;
this.valid = scan.valid; this.valid = scan.valid;
} }

View File

@ -11,20 +11,12 @@ 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 implements IResponse { export class ResponseScanStation {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.SCANSTATION;
/** /**
* The client's id. * The client's id.
*/ */
@ -72,7 +64,7 @@ export class ResponseScanStation implements IResponse {
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.";
if (station.track) { this.track = station.track.toResponse(); } this.track = station.track;
this.enabled = station.enabled; this.enabled = station.enabled;
} }
} }

View File

@ -1,19 +1,11 @@
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 implements IResponse { export class ResponseSelfServiceDonation {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.SELFSERVICEDONATION;
/** /**
* The donation's donor. * The donation's donor.
*/ */

View File

@ -3,8 +3,6 @@ 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';
@ -12,12 +10,7 @@ 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 implements IResponse { export class ResponseSelfServiceRunner extends ResponseParticipant {
/**
* 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.

View File

@ -7,20 +7,12 @@ 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 implements IResponse { export class ResponseStats {
/**
* 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.
*/ */

View File

@ -8,19 +8,11 @@ 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 implements IResponse { export class ResponseStatsClient {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.STATSCLIENT;
/** /**
* The client's id. * The client's id.
*/ */

View File

@ -4,20 +4,12 @@ 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 implements IResponse { export class ResponseStatsOrgnisation {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.STATSORGANIZATION;
/** /**
* The orgs's id. * The orgs's id.
*/ */

View File

@ -4,21 +4,13 @@ import {
IsString IsString
} from "class-validator"; } from "class-validator";
import { Runner } from '../entities/Runner'; import { Runner } from '../entities/Runner';
import { ResponseObjectType } from '../enums/ResponseObjectType'; import { RunnerGroup } from '../entities/RunnerGroup';
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 implements IResponse { export class ResponseStatsRunner {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.STATSRUNNER;
/** /**
* The runner's id. * The runner's id.
*/ */
@ -59,7 +51,7 @@ export class ResponseStatsRunner implements IResponse {
* The runner's group. * The runner's group.
*/ */
@IsObject() @IsObject()
group: ResponseRunnerGroup; group: RunnerGroup;
/** /**
* Creates a new runner stats response from a runner * Creates a new runner stats response from a runner
@ -72,6 +64,6 @@ export class ResponseStatsRunner implements IResponse {
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.toResponse(); this.group = runner.group;
} }
} }

View File

@ -3,22 +3,14 @@ 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 implements IResponse { export class ResponseStatsTeam {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.STATSTEAM;
/** /**
* The team's id. * The team's id.
*/ */
@ -47,7 +39,7 @@ export class ResponseStatsTeam implements IResponse {
* The teams's parent group. * The teams's parent group.
*/ */
@IsObject() @IsObject()
parent: ResponseRunnerGroup; parent: RunnerGroup;
/** /**
* Creates a new team stats response from a team * Creates a new team stats response from a team
@ -56,7 +48,7 @@ export class ResponseStatsTeam implements IResponse {
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.toResponse(); this.parent = team.parentGroup;
this.distance = team.distance; this.distance = team.distance;
this.donationAmount = team.distanceDonationAmount; this.donationAmount = team.distanceDonationAmount;
} }

View File

@ -1,19 +1,11 @@
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 implements IResponse { export class ResponseTrack {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.TRACK;
/** /**
* The track's id. * The track's id.
*/ */

View File

@ -1,7 +1,5 @@
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';
@ -10,13 +8,7 @@ import { ResponseTrack } from './ResponseTrack';
/** /**
* Defines the trackScan response. * Defines the trackScan response.
*/ */
export class ResponseTrackScan extends ResponseScan implements IResponse { export class ResponseTrackScan extends ResponseScan {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.TRACKSCAN;
/** /**
* The scan's associated track. * The scan's associated track.
*/ */
@ -49,8 +41,8 @@ export class ResponseTrackScan extends ResponseScan implements IResponse {
public constructor(scan: TrackScan) { public constructor(scan: TrackScan) {
super(scan); super(scan);
this.track = new ResponseTrack(scan.track); this.track = new ResponseTrack(scan.track);
if (scan.card) { scan.card.toResponse(); } this.card = scan.card.toResponse();
if (scan.station) { scan.station.toResponse(); } this.station = scan.station.toResponse();
this.timestamp = scan.timestamp; this.timestamp = scan.timestamp;
this.distance = scan.distance; this.distance = scan.distance;
} }

View File

@ -6,21 +6,13 @@ import {
IsString IsString
} from "class-validator"; } from "class-validator";
import { User } from '../entities/User'; import { User } from '../entities/User';
import { ResponseObjectType } from '../enums/ResponseObjectType'; import { UserGroup } from '../entities/UserGroup';
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 implements IResponse { export class ResponseUser extends ResponsePrincipal {
/**
* 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.
*/ */
@ -74,7 +66,7 @@ export class ResponseUser extends ResponsePrincipal implements IResponse {
*/ */
@IsArray() @IsArray()
@IsOptional() @IsOptional()
groups: ResponseUserGroup[]; groups: UserGroup[];
/** /**
* The user's permissions. * The user's permissions.
@ -98,13 +90,10 @@ export class ResponseUser extends ResponsePrincipal implements IResponse {
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 = new Array<ResponseUserGroup>(); this.groups = user.groups;
this.permissions = user.allPermissions; this.permissions = user.allPermissions;
if (user.groups) { if (this.groups) {
for (let group of user.groups) { this.groups.forEach(function (g) { delete g.permissions });
delete group.permissions;
this.groups.push(group.toResponse());
}
} }
} }
} }

View File

@ -1,20 +1,12 @@
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 implements IResponse { export class ResponseUserGroup extends ResponsePrincipal {
/**
* The responseType.
* This contains the type of class/entity this response contains.
*/
responseType: ResponseObjectType = ResponseObjectType.USERGROUP;
/** /**
* The userGroup's name. * The userGroup's name.
*/ */
@ -34,7 +26,7 @@ export class ResponseUserGroup extends ResponsePrincipal implements IResponse {
*/ */
@IsArray() @IsArray()
@IsOptional() @IsOptional()
permissions: ResponsePermission[]; permissions: Permission[];
/** /**
* Creates a ResponseUserGroup object from a userGroup. * Creates a ResponseUserGroup object from a userGroup.
@ -44,10 +36,6 @@ export class ResponseUserGroup extends ResponsePrincipal implements IResponse {
super(group); super(group);
this.name = group.name; this.name = group.name;
this.description = group.description; this.description = group.description;
if (group.permissions) { this.permissions = group.permissions;
for (let permission of group.permissions) {
this.permissions.push(permission.toResponse());
}
}
} }
} }

View File

@ -5,20 +5,12 @@ 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 implements IResponse { export class ResponseUserPermissions {
/**
* 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.
*/ */

View File

@ -34,8 +34,7 @@ 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 () => {
@ -48,8 +47,7 @@ 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 () => {
@ -62,8 +60,7 @@ 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"
}); });
}); });
}); });
@ -100,8 +97,7 @@ 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 () => {
@ -114,8 +110,7 @@ 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 () => {
@ -129,8 +124,7 @@ 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 () => {
@ -144,8 +138,7 @@ 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"
}); });
}); });
}); });

View File

@ -96,8 +96,7 @@ 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 () => {
@ -111,8 +110,7 @@ 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"
}); });
}); });
}); });
@ -144,8 +142,7 @@ 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 () => {
@ -159,8 +156,7 @@ 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"
}); });
}); });
}); });

View File

@ -136,7 +136,6 @@ 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,
@ -150,8 +149,7 @@ 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 () => {
@ -176,8 +174,7 @@ 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 () => {
@ -190,7 +187,6 @@ 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,
@ -204,8 +200,7 @@ 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 () => {

View File

@ -86,8 +86,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");
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",
@ -102,8 +101,7 @@ 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 () => {
@ -129,8 +127,7 @@ 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 () => {
@ -142,7 +139,6 @@ 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",
@ -157,8 +153,7 @@ 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 () => {
@ -184,8 +179,7 @@ describe('Update contact group after adding (should work)', () => {
"city": null, "city": null,
"country": null "country": null
}, },
"groups": [], "groups": []
"responseType": "GROUPCONTACT"
}); });
}); });
}); });
@ -212,7 +206,6 @@ 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",
@ -227,8 +220,7 @@ 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 () => {

View File

@ -179,8 +179,7 @@ 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"
}); });
}); });
}); });
@ -231,8 +230,7 @@ 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"
}) })
}); });
}); });

View File

@ -323,6 +323,7 @@ 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);

View File

@ -55,6 +55,7 @@ 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,
@ -63,8 +64,7 @@ describe('adding + getting from all orgs', () => {
"postalcode": null, "postalcode": null,
}, },
"registrationEnabled": false, "registrationEnabled": false,
"teams": [], "teams": []
"responseType": "RUNNERORGANIZATION"
}) })
}); });
}); });
@ -89,6 +89,7 @@ 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,
@ -97,8 +98,7 @@ describe('adding + getting explicitly', () => {
"postalcode": null, "postalcode": null,
}, },
"registrationEnabled": false, "registrationEnabled": false,
"teams": [], "teams": []
"responseType": "RUNNERORGANIZATION"
}) })
}); });
}); });

View File

@ -43,6 +43,7 @@ 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,
@ -51,8 +52,7 @@ 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,6 +127,7 @@ 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,
@ -135,7 +136,6 @@ 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 () => {

View File

@ -41,6 +41,7 @@ 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,
@ -49,8 +50,7 @@ describe('adding + updating name', () => {
"postalcode": null, "postalcode": null,
}, },
"registrationEnabled": false, "registrationEnabled": false,
"teams": [], "teams": []
"responseType": "RUNNERORGANIZATION"
}) })
}); });
}); });
@ -109,6 +109,7 @@ 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,
@ -117,8 +118,7 @@ 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,6 +139,7 @@ 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,
@ -147,8 +148,7 @@ 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,6 +169,7 @@ 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",
@ -177,8 +178,7 @@ 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,6 +199,7 @@ 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",
@ -207,8 +208,7 @@ 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,6 +229,7 @@ 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",
@ -237,8 +238,7 @@ 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,6 +259,7 @@ 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",
@ -267,8 +268,7 @@ 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,6 +282,7 @@ 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,
@ -290,8 +291,7 @@ describe('adding + updateing address valid)', () => {
"postalcode": null "postalcode": null
}, },
"registrationEnabled": false, "registrationEnabled": false,
"teams": [], "teams": []
"responseType": "RUNNERORGANIZATION"
}); });
}); });
}); });

View File

@ -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",
"responseType": "RUNNERTEAM" "contact": null
}); });
}); });
it('check if team really was deleted', async () => { it('check if team really was deleted', async () => {

View File

@ -127,7 +127,6 @@ 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)
}); });
}); });

View File

@ -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 runner was added via the teams/runners endpoint.', async () => { it('check if scans was added via the orgs/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");

View File

@ -49,7 +49,6 @@ 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);
}); });
}); });
@ -95,7 +94,6 @@ 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);
}); });
}); });

View File

@ -98,12 +98,10 @@ 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 () => {
@ -116,12 +114,10 @@ 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 () => {
@ -134,12 +130,10 @@ 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"
}); });
}); });
}); });
@ -198,12 +192,10 @@ 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 () => {
@ -219,12 +211,10 @@ 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 () => {
@ -240,12 +230,10 @@ 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",
}); });
}); });
}); });

View File

@ -72,7 +72,6 @@ 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);
}); });
}); });

View File

@ -123,13 +123,12 @@ 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 () => {
@ -142,13 +141,11 @@ 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 () => {
@ -172,13 +169,11 @@ 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"
}); });
}); });
}); });

View File

@ -56,8 +56,7 @@ 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 () => {
@ -74,8 +73,7 @@ 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 () => {
@ -92,8 +90,7 @@ 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 () => {
@ -110,8 +107,7 @@ 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"
}); });
}); });
}); });

View File

@ -54,8 +54,7 @@ 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 () => {
@ -70,8 +69,7 @@ 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 () => {
@ -86,8 +84,7 @@ 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"
}) })
}); });
}); });

View File

@ -35,8 +35,7 @@ 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 () => {