npm install
docker-compose up -d --build
On first start run:
docker-compose exec mongo /docker-entrypoint-initdb.d/init-db.sh update
To dump db:
docker-compose exec mongo bash -c "mongodump --db=commission-calculator --gzip --out=/db-dump"
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
Calculate commission
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"date": "2021-01-01",
"amount": "200.00",
"currency": "USD",
"client_id": 1
}' \
'http://localhost:3000/commission'
Set rule to force fixed commission on some client_id
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"fixed_commission": "0.05",
"currency": "EUR",
"client_id": 42
}' \
'http://localhost:3000/commissions-override-rules'
Get rule by client_id
curl -i -X GET \
'http://localhost:3000/commissions-override-rules?client_id=42'
Create a transaction
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"date": "2021-01-01",
"amount": "100.00",
"currency": "EUR",
"client_id": 42
}' \
'http://localhost:3000/transactions'
Get transactions by client_id
.
When client_id
is not provided it will return all transactions.
curl -i -X GET \
'http://localhost:3000/transactions?client_id=42'
Set application configurations.
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"minimum_commission": "0.05",
"discount_commission": "0.03",
"discount_turnover_months": 1,
"discount_turnover_amount": "1000.00",
"commission_percentage": 0.005,
"currency": "EUR"
}' \
'http://localhost:3000/configs'
Get application configurations.
curl -i -X GET \
'http://localhost:3000/configs'