Compare commits
11
Commits
v0.10.2
...
30c6d3d8db
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30c6d3d8db | ||
|
|
6c14ed9c89 | ||
|
|
01ed51489e | ||
|
|
0636616dad | ||
|
|
34dbaaafe0 | ||
|
|
b4c31ee9b5 | ||
|
|
99307423c5 | ||
|
|
71542bc388 | ||
|
|
d64f470b60 | ||
|
|
b8fbb72fa0 | ||
|
|
0c61ff457d |
+4
-2
@@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
|
||||
#### [v0.10.2](https://git.odit.services/lfk/backend/compare/v0.10.1...v0.10.2)
|
||||
|
||||
- Merge pull request 'Release 0.10.2' (#192) from dev into main [`1d82f65`](https://git.odit.services/lfk/backend/commit/1d82f65b0d3a32d10c1a10c991353c18696d58bf)
|
||||
- Added first selfservice test [`057ae0d`](https://git.odit.services/lfk/backend/commit/057ae0d79758cd627d6d128406a0d201b6b7ad9b)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`b7ad5d3`](https://git.odit.services/lfk/backend/commit/b7ad5d3a31b8b4f5960852d3ac38af133719ebcd)
|
||||
- First try of the laptime sort [`4471e57`](https://git.odit.services/lfk/backend/commit/4471e57438582d55ff846fd69c2cfcc26b40df2a)
|
||||
@@ -22,17 +23,18 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
- Fixed top-ten bein top 9 [`a6a526d`](https://git.odit.services/lfk/backend/commit/a6a526dc5d8b1613ea34e82e477081349e764aec)
|
||||
- added new ci secret [`5633e85`](https://git.odit.services/lfk/backend/commit/5633e85f41cb69b10fd8a86f57f1bd2f50848f7b)
|
||||
- Added temp console log for test [`22cae39`](https://git.odit.services/lfk/backend/commit/22cae39bd351ca285880e50187ea0d46a7a26437)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`610988e`](https://git.odit.services/lfk/backend/commit/610988ec16b8df61cca61cf2252a469d30318d81)
|
||||
- Added temp console log for ci debugging [`4a73eab`](https://git.odit.services/lfk/backend/commit/4a73eab134c3a9f58771be996bc8811b62cf378e)
|
||||
- Temp disabled runners by donations test [`0b07a53`](https://git.odit.services/lfk/backend/commit/0b07a53ed209c6193ead3c4d199545e22333ab32)
|
||||
- Updated default docker-compose [`f8baca5`](https://git.odit.services/lfk/backend/commit/f8baca5ab2c56b906751bc7edd71477456ad91f3)
|
||||
- Removed all useless console.logs [`95e1eec`](https://git.odit.services/lfk/backend/commit/95e1eec313a79458dd75307a9d0f8319af0d0904)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`dd6d799`](https://git.odit.services/lfk/backend/commit/dd6d799c847fc96aec1be8f2667ad371890076fb)
|
||||
- Resolved missing parentgroup relation [`23bd432`](https://git.odit.services/lfk/backend/commit/23bd432c5f33a0863217120d97e2e4ea52a08baf)
|
||||
- Removed console logs for now working tests [`71b33ab`](https://git.odit.services/lfk/backend/commit/71b33ab05b53b62c8b271bd2995c94b2fc212dfd)
|
||||
- Fixed typo in test [`cbcb829`](https://git.odit.services/lfk/backend/commit/cbcb829fbde3a4a5e7f94de5dcf24d854c5fc257)
|
||||
- Ptotential fix for stats failing [`dcdbdd1`](https://git.odit.services/lfk/backend/commit/dcdbdd15acfe6eef4220b7ed66db60d78107d1f9)
|
||||
- 🚀Bumped version to v0.10.2 [`6e236ed`](https://git.odit.services/lfk/backend/commit/6e236ede145e164ee84543fb62404b4776550973)
|
||||
- Merge pull request 'stats/runners/laptime feature/190-runners_laptime' (#191) from feature/190-runners_laptime into dev [`a694ad2`](https://git.odit.services/lfk/backend/commit/a694ad225c68fa23152402acba871c857433cc70)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`dd6d799`](https://git.odit.services/lfk/backend/commit/dd6d799c847fc96aec1be8f2667ad371890076fb)
|
||||
- Removed all useless console.logs [`95e1eec`](https://git.odit.services/lfk/backend/commit/95e1eec313a79458dd75307a9d0f8319af0d0904)
|
||||
- Pinned testing container tag to prod container tag [`10221b9`](https://git.odit.services/lfk/backend/commit/10221b9f2e4493080f3ff095d9772bcfd0ac50eb)
|
||||
- Now resolving all relations for orgs by distance [`4a294b1`](https://git.odit.services/lfk/backend/commit/4a294b1e17c44294274b06748ec8141812c2d217)
|
||||
- Added temp console log [`720774f`](https://git.odit.services/lfk/backend/commit/720774fcf47c38601ab88d5d74cfcd0e47b21acf)
|
||||
|
||||
@@ -33,6 +33,7 @@ export class CreateDistanceDonation extends CreateDonation {
|
||||
let newDonation = new DistanceDonation;
|
||||
|
||||
newDonation.amountPerDistance = this.amountPerDistance;
|
||||
newDonation.payedAmount = this.payedAmount;
|
||||
newDonation.donor = await this.getDonor();
|
||||
newDonation.runner = await this.getRunner();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { IsInt, IsPositive } from 'class-validator';
|
||||
import { IsInt, IsOptional, IsPositive } from 'class-validator';
|
||||
import { getConnection } from 'typeorm';
|
||||
import { DonorNotFoundError } from '../../../errors/DonorErrors';
|
||||
import { Donation } from '../../entities/Donation';
|
||||
@@ -16,6 +16,13 @@ export abstract class CreateDonation {
|
||||
@IsPositive()
|
||||
donor: number;
|
||||
|
||||
/**
|
||||
* The donation's payed amount in the smalles unit of your currency (default: euro cent).
|
||||
*/
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
payedAmount?: number;
|
||||
|
||||
/**
|
||||
* Creates a new Donation entity from this.
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,7 @@ export class CreateFixedDonation extends CreateDonation {
|
||||
let newDonation = new FixedDonation;
|
||||
|
||||
newDonation.amount = this.amount;
|
||||
newDonation.payedAmount = this.payedAmount;
|
||||
newDonation.donor = await this.getDonor();
|
||||
|
||||
return newDonation;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { IsInt, IsPositive } from 'class-validator';
|
||||
import { IsInt, IsOptional, IsPositive } from 'class-validator';
|
||||
import { getConnection } from 'typeorm';
|
||||
import { DonorNotFoundError } from '../../../errors/DonorErrors';
|
||||
import { Donation } from '../../entities/Donation';
|
||||
@@ -23,6 +23,13 @@ export abstract class UpdateDonation {
|
||||
@IsPositive()
|
||||
donor: number;
|
||||
|
||||
/**
|
||||
* The donation's payed amount in the smalles unit of your currency (default: euro cent).
|
||||
*/
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
payedAmount?: number;
|
||||
|
||||
/**
|
||||
* Creates a new Donation entity from this.
|
||||
*/
|
||||
|
||||
@@ -20,6 +20,7 @@ export class UpdateFixedDonation extends UpdateDonation {
|
||||
*/
|
||||
public async update(donation: FixedDonation): Promise<FixedDonation> {
|
||||
donation.amount = this.amount;
|
||||
donation.payedAmount = this.payedAmount;
|
||||
donation.donor = await this.getDonor();
|
||||
|
||||
return donation;
|
||||
|
||||
@@ -2,7 +2,7 @@ import {
|
||||
IsInt,
|
||||
IsNotEmpty
|
||||
} from "class-validator";
|
||||
import { Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
||||
import { ResponseDonation } from '../responses/ResponseDonation';
|
||||
import { Donor } from './Donor';
|
||||
|
||||
@@ -34,6 +34,13 @@ export abstract class Donation {
|
||||
*/
|
||||
public abstract get amount(): number;
|
||||
|
||||
/**
|
||||
* The donation's payed amount in cents (or whatever your currency's smallest unit is.).
|
||||
* Used to mark donations as payed.
|
||||
*/
|
||||
@Column({ nullable: true })
|
||||
@IsInt()
|
||||
payedAmount: number;
|
||||
|
||||
/**
|
||||
* Turns this entity into it's response class.
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* This enum contains all status a donation can inherit regarding it's payment status.
|
||||
*/
|
||||
export enum DonationStatus {
|
||||
OPEN = 'OPEN',
|
||||
PAYED = 'PAYED'
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
||||
import { Donation } from '../entities/Donation';
|
||||
import { DonationStatus } from '../enums/DonationStatus';
|
||||
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||
import { IResponse } from './IResponse';
|
||||
import { ResponseDonor } from './ResponseDonor';
|
||||
@@ -15,6 +16,12 @@ export class ResponseDonation implements IResponse {
|
||||
*/
|
||||
responseType: ResponseObjectType = ResponseObjectType.DONATION;
|
||||
|
||||
/**
|
||||
* The donation's payment status.
|
||||
* Provides you with a quick indicator of it's payment status.
|
||||
*/
|
||||
status: DonationStatus;
|
||||
|
||||
/**
|
||||
* The donation's id.
|
||||
*/
|
||||
@@ -34,6 +41,12 @@ export class ResponseDonation implements IResponse {
|
||||
@IsInt()
|
||||
amount: number;
|
||||
|
||||
/**
|
||||
* The donation's payed amount in the smalles unit of your currency (default: euro cent).
|
||||
*/
|
||||
@IsInt()
|
||||
payedAmount: number;
|
||||
|
||||
/**
|
||||
* Creates a ResponseDonation object from a scan.
|
||||
* @param donation The donation the response shall be build for.
|
||||
@@ -42,5 +55,12 @@ export class ResponseDonation implements IResponse {
|
||||
this.id = donation.id;
|
||||
this.donor = donation.donor.toResponse();
|
||||
this.amount = donation.amount;
|
||||
this.payedAmount = donation.payedAmount;
|
||||
if (this.payedAmount < this.amount) {
|
||||
this.status = DonationStatus.OPEN;
|
||||
}
|
||||
else {
|
||||
this.status = DonationStatus.PAYED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ describe('POST /api/donations/fixed successfully', () => {
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json")
|
||||
});
|
||||
it('creating a new fixed donation should return 200', async () => {
|
||||
it('creating a new fixed donation with more params should return 200', async () => {
|
||||
const res = await axios.post(base + '/api/donations/fixed', {
|
||||
"donor": added_donor.id,
|
||||
"amount": 1000
|
||||
@@ -181,6 +181,25 @@ describe('POST /api/donations/fixed successfully', () => {
|
||||
expect(res.data).toEqual({
|
||||
"donor": added_donor,
|
||||
"amount": 1000,
|
||||
"payedAmount": 0,
|
||||
"status": "OPEN",
|
||||
"responseType": "DONATION"
|
||||
});
|
||||
});
|
||||
it('creating a new fixed donation with all params should return 200', async () => {
|
||||
const res = await axios.post(base + '/api/donations/fixed', {
|
||||
"donor": added_donor.id,
|
||||
"amount": 1000,
|
||||
"payedAmount": 1000
|
||||
}, axios_config);
|
||||
delete res.data.id;
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data).toEqual({
|
||||
"donor": added_donor,
|
||||
"amount": 1000,
|
||||
"payedAmount": 1000,
|
||||
"status": "PAYED",
|
||||
"responseType": "DONATION"
|
||||
});
|
||||
});
|
||||
@@ -219,7 +238,7 @@ describe('POST /api/donations/distance successfully', () => {
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json")
|
||||
});
|
||||
it('creating a new fixed donation should return 200', async () => {
|
||||
it('creating a new distance donation with most params should return 200', async () => {
|
||||
const res = await axios.post(base + '/api/donations/distance', {
|
||||
"runner": added_runner.id,
|
||||
"amountPerDistance": 100,
|
||||
@@ -233,6 +252,28 @@ describe('POST /api/donations/distance successfully', () => {
|
||||
"amountPerDistance": 100,
|
||||
"runner": added_runner,
|
||||
"amount": 0,
|
||||
"payedAmount": 0,
|
||||
"status": "PAYED",
|
||||
"responseType": "DISTANCEDONATION"
|
||||
})
|
||||
});
|
||||
it('creating a new distance donation with all params should return 200', async () => {
|
||||
const res = await axios.post(base + '/api/donations/distance', {
|
||||
"runner": added_runner.id,
|
||||
"amountPerDistance": 100,
|
||||
"donor": added_donor.id,
|
||||
"payedAmount": 1000
|
||||
}, axios_config);
|
||||
delete res.data.id;
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data).toEqual({
|
||||
"donor": added_donor,
|
||||
"amountPerDistance": 100,
|
||||
"runner": added_runner,
|
||||
"amount": 0,
|
||||
"payedAmount": 1000,
|
||||
"status": "PAYED",
|
||||
"responseType": "DISTANCEDONATION"
|
||||
})
|
||||
});
|
||||
|
||||
@@ -213,6 +213,17 @@ describe('adding + updating fixed donation valid', () => {
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data.amount).toEqual(42);
|
||||
});
|
||||
it('updating payedAmount should return 200', async () => {
|
||||
const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
|
||||
"id": added_donation.id,
|
||||
"donor": added_donor.id,
|
||||
"amount": 42,
|
||||
"payedAmount": 10
|
||||
}, axios_config);
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data.payedAmount).toEqual(10);
|
||||
});
|
||||
it('updating donor should return 200', async () => {
|
||||
const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
|
||||
"id": added_donation.id,
|
||||
@@ -317,6 +328,19 @@ describe('adding + updating distance donation valid', () => {
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data.amountPerDistance).toEqual(69);
|
||||
});
|
||||
it('updating payedAmount should return 200', async () => {
|
||||
const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
|
||||
"id": added_donation.id,
|
||||
"runner": added_runner.id,
|
||||
"amountPerDistance": 69,
|
||||
"donor": added_donor.id,
|
||||
"payedAmount": 10
|
||||
}, axios_config);
|
||||
delete res.data.donor.donationAmount;
|
||||
expect(res.status).toEqual(200);
|
||||
expect(res.headers['content-type']).toContain("application/json");
|
||||
expect(res.data.payedAmount).toEqual(10);
|
||||
});
|
||||
it('updating runner should return 200', async () => {
|
||||
const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
|
||||
"id": added_donation.id,
|
||||
|
||||
Reference in New Issue
Block a user