Bank tech test JavaScript version
Today, you'll practice doing a tech test.
For most tech tests, you'll essentially have unlimited time. This practice session is about producing the best code you can when there is a minimal time pressure.
You'll get to practice your OO design and TDD skills.
You'll work alone, and you'll also review your own code so you can practice reflecting on and improving your own work.
Specification
Requirements
- You should be able to interact with your code via a REPL like IRB or Node. (You don't need to implement a command line interface that takes input from STDIN.)
- Deposits, withdrawal.
- Account statement (date, amount, balance) printing.
- Data can be kept in memory (it doesn't need to be stored to a database or anything).
Acceptance criteria
Given a client makes a deposit of 1000 on 10-01-2023 And a deposit of 2000 on 13-01-2023 And a withdrawal of 500 on 14-01-2023 When she prints her bank statement Then she would see
date || credit || debit || balance
14/01/2023 || || 500.00 || 2500.00
13/01/2023 || 2000.00 || || 3000.00
10/01/2023 || 1000.00 || || 1000.00
Self-assessment
Once you have completed the challenge and feel happy with your solution, here's a form to help you reflect on the quality of your code: https://docs.google.com/forms/d/1Q-NnqVObbGLDHxlvbUfeAC7yBCf3eCjTmz6GOqC9Aeo/edit
Dependencies
Production:
Moment - Time formatting library.
Development:
MockDate - A JavaScript mockdate object used to change when "now" is for testing purposes.
Jest - JavaScript testing framework.
Quick Start
- Clone this repo
- Install dependencies with:
- Run tests with:
- Run the Node REPL:
- Use the account with the following functions:
| Function | Description |
|---|---|
| > const Account = require('./src/account.js'); | Require in account.js |
| > let bankAccount = new Account(); | Create new account |
| bankAccount.add(amount); | Deposit any value you choose into the account as the amount parameter |
| bankAccount.withdraw(amount); | Withdraw any value you choose from the account as the amount parameter. Although account must have at least that balance or 'Insufficient funds" will be shown |
| bankAccount.statement(); | Will print statement to teh screen showing transaction history including dates, amounts and balance after each transaction |
Testing
To run tests
Below is an example of what would be shown on the screen:
To check test coverage
Test coverage is > %95

