Skip to content

Commit

Permalink
Last working state of BudgetBoss - first thing to be done is fix List…
Browse files Browse the repository at this point in the history
…ener
  • Loading branch information
nathanh89 committed Jan 9, 2013
2 parents f97095b + 8a9257b commit 1482f35
Show file tree
Hide file tree
Showing 36 changed files with 1,913 additions and 10 deletions.
6 changes: 0 additions & 6 deletions .gitignore

This file was deleted.

4 changes: 0 additions & 4 deletions README.md

This file was deleted.

220 changes: 220 additions & 0 deletions features/BudgetBossFeatureList.md
@@ -0,0 +1,220 @@
<table>
<thead>
<tr>
<th>Feature</th>
<th>Story</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>BudgetBoss has a main menu</td>
<td>
<ul>
<li>Given: Personal finances need to be managed in a boss-like fashion</li>
<li>When: BudgetBoss is launched</li>
<li>And: After an initial welcome message</li>
<li>Then: A main menu will appear with access to various functions</li>
<li>For more on available main menu features see: <a href = "MainMenuFeatureList.md">Main Menu Feature List</a>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can create new budgets</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user needs to create a new budget</li>
<li>Then: The user will be prompted to name the budget, and it will be created and set as the budget in use</li>
<li>For more on the features of the budgets themselves, see: <a href = "BudgetFeatureList.md">Budget Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can save budgets to disk</td>
<td>
<ul>
<li>Given: BudgetBoss is running and a budget is in use</li>
<li>When: A user needs to store a budget outside of the program</li>
<li>Then: The user can write the budget to disk as a .bgt file</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can load saved budgets</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user needs to access a previously saved budget</li>
<li>Then: The user can open the desired budget and it will load into BudgetBoss</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can seach for budgets to load</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user needs to access a previously saved budget</li>
<li>Then: The user can point BudgetBoss to a valid path and it will collect any saved budgets there for potential loading</li>
<li>For more on how the validity of the path is determined, see: <a href = "InputValidatorFeatureList.md">Input Validator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can load budgets from a selectable list</td>
<td>
<ul>
<li>Given: BudgetBoss has collected saved budgets from a directory searched</li>
<li>When: A user wants to open a collected budgets</li>
<li>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</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can generate budget reports</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user needs to see a summary of all the information in a budget</li>
<li>Then: The user can print out the contents of the budget via the budget's toString() method, to the console</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can save budget reports to disk</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user needs to see a summary of all the information in a budget</li>
<li>And: Have access to that information outside of BudgetBoss
<li>Then: The user can print out the contents of the budget via the budget's toString() method, to a text document</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss indicates budget in use</td>
<td>
<ul>
<li>Given: BudgetBoss is launched</li>
<li>When: A saved budget is opened or a budget is created</li>
<li>Then: An indicator above the menus will show the name of the current budget in use</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss knows when there is no budget in use</td>
<td>
<ul>
<li>Given: BudgetBoss is launched</li>
<li>When: The main menu comes up initially, before a user has a chance to open/create a budget</li>
<li>Then: The indicator for the budget in use will show "No budget loaded"</li>
<li>And: Menu features will be restricted until a budget is opened/created.</li>
<li>For more on restricting menu functions see: <a href = "MainMenuFeatureList.md">Main Menu Feature List</a></li>

</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss has a default load directory - Linux</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user is loading a budget after initial program launch</li>
<li>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/)</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss has a default save directory - Linux</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user is saving a budget/budget report after loading/creating one</li>
<li>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/)</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss modifies default load directory</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user is loading a budget after initial program launch</li>
<li>And: The user declines to use the default directory, and instead opts to input a custom load directory path</li>
<li>If: The user enters a valid path and successfully loads a budget from it</li>
<li>Then: BudgetBoss will make the directory from which the budget was loaded the new default load directory</li>
<li>For more on how the validity of the inputted path is determined, see: <a href = "InputValidatorFeatureList.md">Input Validator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss modifies default save directory</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user is saving a budget/budget report</li>
<li>And: The user declines to use the default directory, and instead opts to input a custom save directory path</li>
<li>If: The user enters a valid path and successfully saves a budget</li>
<li>Then: BudgetBoss will make the directory to which the budget was saved the new default save directory</li>
<li>For more on how the validity of the inputted path is determined, see: <a href = "InputValidatorFeatureList.md">Input Validator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss shares same default directory for saving/loading</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user is loading/saving a budget/budget report</li>
<li>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</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss clears console output on launch and when displaying menus</td>
<td>
<ul>
<li>Given: Personal finances need to be managed in a boss-like fashion</li>
<li>When: BudgetBoss is launched</li>
<li>And: When any menu is displayed
<li>Then: The console output is cleared allowing the menus to remain more or less fixed, for a more pleasant user experience</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can edit budget name</td>
<td>
<ul>
<li>Given: A budget is in use with BudgetBoss</li>
<li>When: A user wants to change the name of the budget in use</li>
<li>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)</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss can edit budget dates</td>
<td>
<ul>
<li>Given: A budget is in use with BudgetBoss</li>
<li>When: A user wants to change the start/end date of the budget in use</li>
<li>Then: New dates can be set for the budget, provided they are valid</li>
<li>For more on how the validity of the date is determined, see: <a href = "InputValidatorFeatureList.md">InputValidator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>BudgetBoss has a global exit command</td>
<td>
<ul>
<li>Given: BudgetBoss is running</li>
<li>When: A user wants to exit the program </li>
<li>And: Is able to provide input to BudgetBoss</li>
<li>Then: Providing "exit" as an input regardless of case will indeed exit the program</li>
</td>
<td>Implemented</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
53 changes: 53 additions & 0 deletions features/BudgetFeatureList.md
@@ -0,0 +1,53 @@
<table>
<thead>
<tr>
<th>Feature</th>
<th>Story</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>Budgets have names</td>
<td>
<ul>
<li>Given: A budget is to be created</li>
<li>When: The budget is constructed with a String input</li>
<li>Then: That String becomes the budget name</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Budgets names serve as filenames</td>
<td>
<ul>
<li>Given: A budget is to be saved</li>
<li>When: A filename is required</li>
<li>Then: The budget filename is derived from the the budget's name</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Budgets have start/end dates</td>
<td>
<ul>
<li>Given: A budget is to be created</li>
<li>When: It is instantiated</li>
<li>Then: The budget will have fields for start and end date</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Budgets dates are null until set</td>
<td>
<ul>
<li>Given: A budget is created</li>
<li>When: The user has not yet edited the start/end dates</li>
<li>Then: Those fields will be null, and if asked to display will instead show a message indicating they need to be set</li>
</td>
<td>Implemented</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
105 changes: 105 additions & 0 deletions features/EditorMenuFeatureList.md
@@ -0,0 +1,105 @@
<table>
<thead>
<tr>
<th>Feature</th>
<th>Story</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>Editor menu presents options in a numbered list</td>
<td>
<ul>
<li>Given: The editor is started in BudgetBoss</li>
<li>When: The options available on the editor menu need to presented to a user</li>
<li>Then: The options are printed out with numerical identifiers and a brief description</li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu takes integer input to select from options</td>
<td>
<ul>
<li>Given: The editor menu is displayed and a user wants to select a option</li>
<li>When: The user inputs a valid number corresponding with a visible option</li>
<li>Then: The associated action of the selected option is carried out</li>
<li>For more on how the validity of the input is determined, see: <a href = "InputValidatorFeatureList.md">Input Validator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu displays error messages below numbered option list</td>
<td>
<ul>
<li>Given: An attempt was made to select an editor menu option</li>
<li>When: The input received to indicate selection is invalid</li>
<li>Then: An appropriate error message indicating the problem with the input will be printed at the bottom of the numbered list of options</li>
<li>And: The user will be able to offer input again</li>
<li>For more on how the validity of the input is determined, see: <a href = "InputValidatorFeatureList.md">Input Validator Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu has the option to print a budget report to the console</td>
<td>
<ul>
<li>Given: The editor menu of BudgetBoss is displayed</li>
<li>When: A user wants to generate a budget report to the console</li>
<li>Then: "Print budget report to console" will be an option on the menu</li>
<li>And: Upon selecting this option, the budget report prints to the console</li>
<li>For more on budget reports, see: <a href = "BudgetBossFeatureList.md">BudgetBoss Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu has the option to save a budget report to disk</td>
<td>
<ul>
<li>Given: The editor menu of BudgetBoss is displayed</li>
<li>When: A user wants to generate a budget report and save it for future access</li>
<li>Then: "Save a budget report" will be an option on the menu</li>
<li>And: Upon selecting this option, a budget report will be generated and saved to a directory of the user's choosing, as a text file</li>
<li>For more on how saving works in BudgetBoss or budget reports, see: <a href = "BudgetBossFeatureList.md">BudgetBoss Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu has the option edit budget name</td>
<td>
<ul>
<li>Given: The editor menu of BudgetBoss is displayed</li>
<li>When: A user wants to change the name of the budget in use</li>
<li>Then: "Edit budget name" will be an option on the menu</li>
<li>And: Upon selecting this option, a new name for the budget can be inputted</li>
<li>For more on editing the budget name, see: <a href = "BudgetBossFeatureList.md">BudgetBoss Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu has the option edit budget dates</td>
<td>
<ul>
<li>Given: The editor menu of BudgetBoss is displayed</li>
<li>When: A user wants to change the start/end date of the budget in use</li>
<li>Then: "Edit budget start date" and "Edit budget end date" will be options on the menu, respectively</li>
<li>And: Upon selecting either option, a new date can be inputted</li>
<li>For more on editing the budget dates, see: <a href = "BudgetBossFeatureList.md">BudgetBoss Feature List</a></li>
</td>
<td>Implemented</td>
</tr>
<tr>
<td>Editor menu has the option to return to main menu</td>
<td>
<ul>
<li>Given: The editor menu of BudgetBoss is displayed</li>
<li>When: A user wants to stop editing the budget in use and have access to the main menu options</li>
<li>Then: "Return to main menu" will be an option on the menu</li>
<li>And: Upon selecting this option, BudgetBoss will display the main menu</a></li>
</td>
<td>Implemented</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
1 change: 1 addition & 0 deletions features/FeatureRequests
@@ -0,0 +1 @@
1) The customer is thrilled that their BudgetBoss program is coming along swimmingly! But they want to be able to integrate their budgets with Budginator, another program that looks at your budget history and proactively schedules online payments to pay down debt. Budginator accepts budgets in a JSON format, and expects them to adhere to the MasterBudget interface.

0 comments on commit 1482f35

Please sign in to comment.