raft-tech / cfgov-refresh

Raft's fork of cfgov-refresh in support of Digital Money Toolkit
https://www.consumerfinance.gov/
Creative Commons Zero v1.0 Universal
3 stars 0 forks source link

Fix-It Strategies Largest (Existing Strategy) Bug #72

Closed RedNumberIX closed 4 years ago

RedNumberIX commented 4 years ago

Fix-It Strategies are supposed to follow this proposed logic: Messedup flow2

However, there is an omission between how this chart was designed to flow and how the app currently operates. After finding the largest expense in one of the three categories (Housing, Due Date and Non-Due Date) the app should then see if the expense has a strategy tied to it. If the expense doesn't have a strategy tied to it, it's supposed to check other expenses within that category to see if they have any strategies. However, the app is not doing that. Messedup flow

As it stands currently, 1/3 of the time the user won't see a Non-Due Date Strategy, 1/3 of the time they won't see a Due Date Strategy, and about 10% of the time they won't see a Fix-It strategy at all. This also means that as they input new expenses into the calendar, strategies will appear and disappear at the same rates.

EXAMPLE 1 (Due Date Expenses)

Step 1 - Enter a $100 Electricity expense (which has a strategy). Example1Step1a

Step 2 - View Fix-It Strategy. Since electricity is a Due Date Expense with a Fix-It Strategy we will see the correct Fix-It Strategy appear (This strategy is entitled "Budget Utility Billing".) Example1Step2

Step 3 - Enter a $200 Internet Expense. (Internet is also a Due Date Expense. However, it does not have a strategy tied to it.) Example1Step3a

Step 4 - View Fix It strategies. No strategies are shown. Instead, it directs the user to view general strategies. Example1Step4

CONCLUSION EXPECTED BEHAVIOR: Internet is the largest Due Date Expense ($200), however, it does not have a strategy tied to it. The App should realize there is no strategy and then begin looking through the other Due Date Expenses. Upon doing so, the app will realize that Electricity is another Due Date Expense that has a strategy tied to it. It then should display the strategy for the Electricity expense, even though it's not the largest.

CURRENT BEHAVIOR: The app recognizes that the Internet is the largest Due Date Expense, but it doesn't have a strategy so it shows nothing. It will not look at any other expenses, even though it should see Electricity as the next Due Date Expense with a strategy tied to it. Since there are 5 Due Date Expenses that don't have strategies and 15 Due Date Expenses total, there is a 1 in 3 chance a Due Date strategies will not appear for this category.

EXAMPLE 2 (Non-Due Date Expenses)

SUMMARY: I recreated steps 1 - 4 above using the same method. In this example, I used Public Transportation as the expense with a strategy and Car Maintenance as the expense without a strategy. In this scenario, no Fix-it Strategies appeared, giving the exact same results as in Example 1.

STEP 1-3 - Enter a $100 Public Transportation Expense (has strategy) and a $200 Car Maintenance expense (has no strategy) Example2Step3a

STEP 4 - View the Fix-it Strategies. There are no Fix-It Strategies for Due Date Expenses Example2Step4a

CONCLUSION The app recognizes that Car maintenance is the largest Non-Due Date Expense, but it doesn't have a strategy so it shows nothing. It will not look at any other expenses, even though it should see Public Transportation as the next Non-Due Date Expense with a strategy tied to it. Since there are 4 Non-Due Date Expenses that don't have strategies out of 11 total Non-Due Date expenses, there is a 1 in 3 chance a Due Date strategies will not appear for this category.

EXAMPLE 3 (BOTH Non-Due and Due Date Expenses)

SUMMARY: In this example I combined the results from Example 1 (where the Due Date expense did not appear) and Example 2 (Where the Non-Due Date expenses did not appear.)In this scenario, no Fix-it Strategies appeared, giving the exact same results as in Example 1 and 2.

STEP 1-3 - Enter a $100 Public Transportation Expense (non-Due Date Expense with strategy, a $200 Car Maintenance expense (non-Due Date Expense without a strategy), a $100 Electricity expense (Due Date Expense with a strategy), and a $200 Internet Expense (Due Date expense without a strategy). Example3Step3

STEP 4 - View the Fix-it Strategies. There are no Fix-It Strategies for Due Date Expenses and non-Due Date Expenses. Example3Step4

CONCLUSION There's a 10% that no Fix-It strategies will ever appear for the user. Also as the user inputs new expenses into the calendar, strategies will just entirely disappear.

RedNumberIX commented 4 years ago

As per your request @MissyM2 I have included a chart that lists the Expense Categories and existing Strategies. NOTE: For the edification of everyone here, you earlier noted that in the code the three categories that are referred to are called 'Housing Expense', 'Billable Expense' (due date expense in your docs) and 'Ad Hoc Expense' (non-due-date expense in your docs).

Picture2

MissyM2 commented 4 years ago

I made some corrections in the logic and tested this on my side with a variety of scenarios. I have submitted a PR and, as soon as Barak can get this up to the new DEV server, we can test it with our internal team.

fyi @RedNumberIX @jbevis @shubhi-raft

MissyM2 commented 4 years ago

Based on testing by @hstout7369, @RedNumberIX and myself, everything is working. It is complete and ready to merge and be closed.

jbevis commented 4 years ago

Feature has been merged. Closing