We will be working with the concept of bank accounts in order to explore more object-oriented code as well as a few other new topics.
- This is an individual, stage 1 project.
- Fork the project master.
- Clone the forked repo:
$ git clone [YOUR FORKED REPO URL]
cd
into the dir create:d$ cd BankAccounts
- Run
git remote -v
to verify the folder you are in corresponds to the fork you have created. - Run
gem install minitest-skip
to install an extra gem for testing (more on what this actually does later).
This is our first project with real tests! Following the instructions from the TDD lecture, there are three things in our project directory:
Rakefile
lib/
specs/
Each class you write (there will only be one until wave 3) should get its own file, lib/class_name.rb
. The specs for that class will be in specs/class_name_spec.rb
, and you can run all specs using rake
.
For wave 1, all tests will be given to you - your job is to write code to make them pass. For waves 2 and 3, we supply descriptions of the tests, but you have to write them yourself.
- Create a class inside of a module
- Create methods inside the class to perform actions
- Learn how Ruby does error handling
- Verify code correctness by testing
Create a Bank
module which will contain your Account
class and any future bank account logic.
Create an Account
class which should have the following functionality:
- A new account should be created with an ID and an initial balance
- Should have a
withdraw
method that accepts a single parameter which represents the amount of money that will be withdrawn. This method should return the updated account balance. - Should have a
deposit
method that accepts a single parameter which represents the amount of money that will be deposited. This method should return the updated account balance. - Should be able to access the current
balance
of an account at any time.
- A new account cannot be created with initial negative balance - this will
raise
anArgumentError
(Google this) - The
withdraw
method does not allow the account to go negative. Instead it will output a warning message and return the original un-modified balance.
Make sure to write tests for any optionals you implement!
- Create an
Owner
class which will store information about those who own theAccounts
.- This should have info like name and address and any other identifying information that an account owner would have.
- Add an
owner
property to each Account to track information about who owns the account.- The
Account
can be created with anowner
, OR you can create a method that will add theowner
after theAccount
has already been created.
- The