Add title, id with default value of nil and status with default value of available to Book initialize method. Create instance variables for each and set getter method for title and setter/getter methods for id and status. Add check_out method to Book to change status to checked_out. All to make failing tests pass. Update tests to include title and author parameters to create instances of the Book class within the tests.
Update check_out method to return true or false based on status to determine whether it can be checked out. Change status to checked_out if it was not previously checked_out.
Add check_in method to Book to set status to available.
Update Borrower initialize method to create a name instance variable and create a getter method for name. Make failing test pass.
Update Library class to have a getter/setter method. Update test to include a name parameter when creating a new instance of the Library class. Make failing test pass.
Update register new book test to expect book id to be nil. Create register_new_book method to create a Book object using the given title and author and push it into the books array.
Add a book id instance variable to the Library initialize method, set to 1 when the library is created. Add a new book to the library books array with the current bookid so the id is not nil. Increment the book id variable so the next added book will have a different id. Allow a borrower to check out a book by the book id, changing the status to checked_out. Make failing tests pass.
Add a borrower attribute to the Book class that is set to none when initialized. Set the borrower attribute when a book is checked out. Create the get_borrower method to look up the borrower using the book id.
Update test to register a new book with the library using just the name and the author as parameters. Update the check_out_book method to see if the status is already checked out and to not allow a borrower to check it out in that case.
Update check_in_book method to change the book status back to available and the borrower to nil if the book is currently checked out
Update test description to match test in that it does not let the borrower check out more than 2 books. Create a books_checked_out attribute for the Borrower class that is set to 0 to start. Check if the borrower has 2 or more books checked out in the check_out_book method before allowing a borrower to chech out that book. Increment books_checked_out when a borrower does check out a book. Decrease books_checked_out when a borrower checks in a book.