Delete redundant methods for available_books and borrowed_books to allow for attr_accessors instead. Create borrowed_books array at initialize and push checked out booked into it while removed books that are checked back in.
Add failing test for default attributes for year_published and edition set to unknown. Add year_published and edition attributes to the initialize method for Book and add to attr_reader. Make failing test pass.
Add failing test for a review method for the Borrower class. Create a reviews hash in the books class to allow multiple borrowers to review one book with a key of the borrower's name and a value of an array including a rating and an optional written review which defaults to an empty string. Create a reviews hash in the Borrower class to keep track of which books the Borrower has reviewed. Review_book method pushed the review into each of these hashes. Make failing tests pass.
Add overdue boolean attritube to the Borrower class to show if a borrower has any overdue books or not. Write corresponding test. Make test pass. Start to write test that adds a due_date attribute to a book when it is checked_out.
Write a failing test to check if a due date attribute for a book is created for one week form now when a book is checked out. Add a due_date attribute to the book class when a book object is created that is originally set to nil. Update the due date attribute to one week from now when a book is checked out by a borrower.
Edit the books_checked_out attribute for the Borrower class to be an array instead of a count to keep track of which books a Borrower has checked out.
Add failing test to see if check_out_book method prevents a borrower from checking out a new book if one of their books is overdue. Add an elsif statement within the check_out_book method to check if any of the books in the borrower's books_checked_out array have a due_date that is prior to now. Does not allow borrower to check out that book if that is the case. Make failing test pass.
Update Borrower class to remove overdue boolean attribute. Update tests to look through books_checked_out array for a due date prior to now instead of the overdue boolean attribute.
Move test on Book attribute due date to the Book class from the Borrower class. Update overdue book test to check if it will allow a Borrower to check out a book once the overdue book has been returned.
Create failing test for a list of who has checked out which book.
Add failing tests for listing borrowed books and overdue books. Add list_borrowed_books and list_overdue_books methods to puts a list of the title of the book, who has it checked out and when it is due. Make failing tests pass.