View Code? Open in Web Editor
NEW
A catalogue app in Ruby that stores information related to items that a user owns. The app uses rspec for testing and has a schema for the postgresql database that would be used to store the information.
ruby-capstone's Issues
All Label class properties visible in the diagram should be defined and set up in the constructor method.
Implement tests for the following method.
Implement method:
add_item method in the Author class
should take an instance of the Item class as an input
should add the input item to the collection of items
should add self as a property of the item object (by using the correct setter from the item object)
add_item method in the Label class
should take an instance of the Item class as an input
should add the input item to the collection of items
should add self as a property of the item object (by using the correct setter from the item object)
Create a Book in a separate .rb file.
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
games table (add all properties and associations from the parent Item class as table columns)
authors table
Implement tests for the following method.
Implement method:
can_be_archived?() in the Item class
should return true if published_date is older than 10 years
otherwise, it should return false
All data should be preserved by saving collections in .json files.
Implement can_be_archived?() method in the Book class
should override the method from the parent class
should return true if parent's method returns true OR if cover_state equals to "bad"
otherwise, it should return false
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
books table (add all properties and associations from the parent Item class as table columns)
labels table
Create the item class in a separate .rb file.
All Item class properties visible in the diagram should be defined and set up in the constructor method. Exception: properties for the 1-to-many relationships should NOT be set in the constructor method. Instead, they should have a custom setter method created.
Link to kanban board here .
Members:
Create MusicAlbum class in a separate .rb file.
All MusicAlbum class properties visible in the diagram should be defined and set up in the constructor method.
add_item method in the Genre class
should take an instance of the Item class as an input
should add the input item to the collection of items
should add self as a property of the item object (by using the correct setter from the item object)
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
books table (add all properties and associations from the parent Item class as table columns)
labels table
Add unit tests for all implemented methods.
Create a main.rb file that will serve as your console app entry-point.
All Book class properties visible in the diagram should be defined and set up in the constructor method.
All data should be preserved by saving collections in .json files.
The following options should be available:
List of games
List all authors (e.g. 'Stephen King')
Add a game
Setup project:
Modify README.md
Update MIT license
Make issues for the rest of the project and assign them
Implement the 'Add a music album' feature
All data should be preserved by saving collections in .json files.
Create Genre class with an association to the Item class (in a separate .rb file).
All Genre class properties visible in the diagram should be defined and set up in the constructor method.
can_be_archived?() in the MusicAlbum class
should override the method from the parent class
should return true if parent's method returns true AND if on_spotify equals true
otherwise, it should return false
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
games table (add all properties and associations from the parent Item class as table columns)
authors table
Implement tests for the following method.
Implement method:
move_to_archive() in the Item class
should reuse can_be_archived?() method
should change the archived property to true if the result of the can_be_archived?() method is true
should do nothing if the result of the can_be_archived?() method is false
List all music albums
List all genres (e.g 'Comedy', 'Thriller')
Create an Author class with an association to the Item class (in a separate .rb file).
All Author class properties visible in the diagram should be defined and set up in the constructor method.
List all books
List all labels (e.g. 'Gift', 'New')
Add a book
Implement tests for the following method.
Implement method:
can_be_archived?() in the Game class
should override the method from the parent class
should return true if parent's method returns true AND if last_played_at is older than 2 years
otherwise, it should return false
Implement startup actions:
Present the user with a list of options to perform.
Let users choose an option.
If needed, ask for parameters for the option.
Have a way to quit the app.
Create a Label class with an association to the Item class (in a separate .rb file).