Banking on Clojure web application
Project under construction
Building a Banking application using Clojure, spec, H2 (development) & Postgresql (live) databases and next.jdbc for SQL queries (migratus for db migrations).
The system infrastructure uses Jetty or HTTP-kit (making this switchable at runtime) and a component life cycle system (probably mount).
Application Design (in progress)
Data Specifications created using
- Customer Details ✔
- Account holder ✔
- Bank account
- Multiple Bank accounts
- Credit Card
Functions and function specifications using
- register-account-holder ✔
- Make a payment
- Send account notification
- Check for overdraft
Functions with specifications are instrumented to check arguments passed during function calls.
Generative testing is carried out via the kaoch test runner.
- Write a failing test ✔
- write mock data ✔
- write an function definition that returns the argument ✔
- run tests - tests should fail ✔
- write a spec for the functions argument - customer ✔
- write a spec for the return value ✔
- write a spec for relationship between args and return value
- replace the mock data with generated values from specification ✔
- update functions and make tests pass ✔
- instrument functions
- run specification checks