+
+ BudgetBoss has a main menu |
+
+
+ - Given: Personal finances need to be managed in a boss-like fashion
+ - When: BudgetBoss is launched
+ - And: After an initial welcome message
+ - Then: A main menu will appear with access to various functions
+ - For more on available main menu features see: Main Menu Feature List
+
|
+ Implemented |
+
+
+ BudgetBoss can create new budgets |
+
+
+ - Given: BudgetBoss is running
+ - When: A user needs to create a new budget
+ - Then: The user will be prompted to name the budget, and it will be created and set as the budget in use
+ - For more on the features of the budgets themselves, see: Budget Feature List
+ |
+ Implemented |
+
+
+ BudgetBoss can save budgets to disk |
+
+
+ - Given: BudgetBoss is running and a budget is in use
+ - When: A user needs to store a budget outside of the program
+ - Then: The user can write the budget to disk as a .bgt file
+ |
+ Implemented |
+
+
+ BudgetBoss can load saved budgets |
+
+
+ - Given: BudgetBoss is running
+ - When: A user needs to access a previously saved budget
+ - Then: The user can open the desired budget and it will load into BudgetBoss
+ |
+ Implemented |
+
+
+ BudgetBoss can seach for budgets to load |
+
+
+ - Given: BudgetBoss is running
+ - When: A user needs to access a previously saved budget
+ - Then: The user can point BudgetBoss to a valid path and it will collect any saved budgets there for potential loading
+ - For more on how the validity of the path is determined, see: Input Validator Feature List
+ |
+ Implemented |
+
+
+ BudgetBoss can load budgets from a selectable list |
+
+
+ - Given: BudgetBoss has collected saved budgets from a directory searched
+ - When: A user wants to open a collected budgets
+ - Then: The budgets names will be printed and paired with indicator numbers, allowing the user to input the number of the budget they want to open
+ |
+ Implemented |
+
+
+ BudgetBoss can generate budget reports |
+
+
+ - Given: BudgetBoss is running
+ - When: A user needs to see a summary of all the information in a budget
+ - Then: The user can print out the contents of the budget via the budget's toString() method, to the console
+ |
+ Implemented |
+
+
+ BudgetBoss can save budget reports to disk |
+
+
+ - Given: BudgetBoss is running
+ - When: A user needs to see a summary of all the information in a budget
+ - And: Have access to that information outside of BudgetBoss
+
- Then: The user can print out the contents of the budget via the budget's toString() method, to a text document
+ |
+ Implemented |
+
+
+ BudgetBoss indicates budget in use |
+
+
+ - Given: BudgetBoss is launched
+ - When: A saved budget is opened or a budget is created
+ - Then: An indicator above the menus will show the name of the current budget in use
+ |
+ Implemented |
+
+
+ BudgetBoss knows when there is no budget in use |
+
+
+ - Given: BudgetBoss is launched
+ - When: The main menu comes up initially, before a user has a chance to open/create a budget
+ - Then: The indicator for the budget in use will show "No budget loaded"
+ - And: Menu features will be restricted until a budget is opened/created.
+ - For more on restricting menu functions see: Main Menu Feature List
+
+ |
+ Implemented |
+
+
+ BudgetBoss has a default load directory - Linux |
+
+
+ - Given: BudgetBoss is running
+ - When: A user is loading a budget after initial program launch
+ - Then: The user will be given the option, via inputting "y", to search their Documents directory for budgets, which is the program default(i.e. /home/nathan/Documents/)
+ |
+ Implemented |
+
+
+ BudgetBoss has a default save directory - Linux |
+
+
+ - Given: BudgetBoss is running
+ - When: A user is saving a budget/budget report after loading/creating one
+ - Then: The user will be given the option, via inputting "y", to save to the budget to their Documents directory, which is the program default(i.e. /home/nathan/Documents/)
+ |
+ Implemented |
+
+
+ BudgetBoss modifies default load directory |
+
+
+ - Given: BudgetBoss is running
+ - When: A user is loading a budget after initial program launch
+ - And: The user declines to use the default directory, and instead opts to input a custom load directory path
+ - If: The user enters a valid path and successfully loads a budget from it
+ - Then: BudgetBoss will make the directory from which the budget was loaded the new default load directory
+ - For more on how the validity of the inputted path is determined, see: Input Validator Feature List
+ |
+ Implemented |
+
+
+ BudgetBoss modifies default save directory |
+
+
+ - Given: BudgetBoss is running
+ - When: A user is saving a budget/budget report
+ - And: The user declines to use the default directory, and instead opts to input a custom save directory path
+ - If: The user enters a valid path and successfully saves a budget
+ - Then: BudgetBoss will make the directory to which the budget was saved the new default save directory
+ - For more on how the validity of the inputted path is determined, see: Input Validator Feature List
+ |
+ Implemented |
+
+
+ BudgetBoss shares same default directory for saving/loading |
+
+
+ - Given: BudgetBoss is running
+ - When: A user is loading/saving a budget/budget report
+ - Then: The default directory they are prompted with will be the last place a budget was saved/loaded from as both saving and loading share the same changeable default directory and either process can modify it
+ |
+ Implemented |
+
+
+ BudgetBoss clears console output on launch and when displaying menus |
+
+
+ - Given: Personal finances need to be managed in a boss-like fashion
+ - When: BudgetBoss is launched
+ - And: When any menu is displayed
+
- Then: The console output is cleared allowing the menus to remain more or less fixed, for a more pleasant user experience
+ |
+ Implemented |
+
+
+ BudgetBoss can edit budget name |
+
+
+ - Given: A budget is in use with BudgetBoss
+ - When: A user wants to change the name of the budget in use
+ - Then: A new name can be set for the budget, provided it is not "exit" (regardless of case, as that command works anywhere BudgetBoss takes input)
+ |
+ Implemented |
+
+
+ BudgetBoss can edit budget dates |
+
+
+ - Given: A budget is in use with BudgetBoss
+ - When: A user wants to change the start/end date of the budget in use
+ - Then: New dates can be set for the budget, provided they are valid
+ - For more on how the validity of the date is determined, see: InputValidator Feature List
+ |
+ Implemented |
+
+
+ BudgetBoss has a global exit command |
+
+
+ - Given: BudgetBoss is running
+ - When: A user wants to exit the program
+ - And: Is able to provide input to BudgetBoss
+ - Then: Providing "exit" as an input regardless of case will indeed exit the program
+ |
+ Implemented |
+
+
+