We need to implement the 'customize/prepaid' plan, according the UX specs
Created attachment 8532173 [details] [review] patch v1.0 WIP. Pending task: Review all the scenarios. Adding unit test.
The behaviour implemented to the new plan type called 'Customize' (currently exist monthly, weekly, never) is the following. When the user chooses the Customize plan two new fields appear: * Starting date: Initialized to the current day * Duration: Initialized to 0 The data graph always starts to store info in the starting date. 1. Duration is 0, the graph shows the accumulated info since the starting date. The behaviour is equal to the current Never plan. (*) 2. Duration is > 0. 2.1 If starting date plus duration is greater than today, the period is already ended, then the behaviour is equal to the section 1. 2.2 If the period has not expired. The graph shows the complete period. (*) If the period between starting date and today is lower than 30 days, the graph draws a period of 30 days initialized in the starting date. If the period is greater than 30 days, the graph only draws the last 21 days. The behaviour of the app when the period has not expired, it's the same than the recurring plans (weekly/monthly). The only differences are: 1. When the period ends, a user notification is fired. 2. The data are not removed when the period ends.
Comment on attachment 8532173 [details] [review] patch v1.0 Hi Salva, would you mind taking a look to the patch? Regards
Comment on attachment 8532173 [details] [review] patch v1.0 Not bad but we need to solve some problems related with the bug: 1- The patch is huge. We should start by adding a flag to enable / disable the new feature. 2- Then we should modify the data model and pass an intensive testing to ensure we don't break functionality. 3- Now we could add the new mode* with its tests. 4- Finally we can set the flag to true. * Furthermore we should resolve what happen when the custom period expires, what is the feedback for the user and we should check that with UX. In addition, current implementation triggers a notification as soon as the user changes to Customize mode due to the default 0 for duration.