Content
View differences
Updated by Christophe Bliard over 1 year ago
### Note
This work package describes how values for the start date, the finish date and duration should change in response to changes to any of one of them. We created a [similar document with scenarios previously](https://community.openproject.org/wp/43539) when we added duration to the date picker, which made it easier:
* For devs to write test cases
* Document behaviour
* Use it for testing
Now with the upcoming [introduction of automatic scheduling](https://community.openproject.org/wp/59539), we need to reevaluate if the following scenarios are still relevant, if the behaviour is consistent and what news scenarios need to be added.
**THIS DOCUMENT IS A WORK IN PROGRESS, PLEASE DO NOT USE IT UNTIL THE STATUS IS SET TO 'TO BE SCHEDULED' or 'SCHEDULED'.**
### Scenarios (updated)
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 1 π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: empty
* Duration: empty
* Include non-working days: off
* Change
* User enters a duration of 10 days
* Expected result:
* The finish date is set Tuesday, January 21 2025 (derived)
<br>
#### Scenario 2 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: empty
* Change
* User enters a duration of 10 days
* Expected result:
* No date is added
<br>
#### Scenario 3 π’
* Setup
* Start date: empty
* Finish date: Tuesday, January 21 2025
* Duration: empty
* Include non-working days: off
* Change
* User enters a duration of 10 days
* Expected result:
* The start date is set to Wednesday, January 8, 2025 (derived)
<br>
#### Scenario 4 π’
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Friday, January 24, 2025
* Duration: 10 days
* Include non-working days: off
* Change
* User changes duration to 11 days
* Expected result:
* The finish date is changed to Monday, January 27, 2025
<br>
#### Scenario 5 π‘ \[Chris: setup dates are invalid, fix with: start date = Monday 6\]
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Monday, January 20, 2025
* Duration: 11
* Non-working days: off.
* Change
* User changes duration to 10 days
* Expected result:
* The finish date is changed to Friday, January 17, 2025
<br>
#### Scenario 6 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by clearing duration field
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 6a π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by focusing duration field and clicking the "x"
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 7 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the start date to Tuesday, January 7, 2025
* Expected result
* Finish date is maintained, duration is automatically adjusted to 3 days (derived; logic = changing one date when the other is present affects duration vs. move the second date).
* \[open\] Challenge?
* π’ \[Chris\] Yes! I totally approve this scenario. I think that's the correct behavior. Before, it would have kept the duration and change the end date, which I always found counter-intuitive.
<br>
#### Scenario 8 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the finish date to January 10, 2025
* Expected result
* Start date is unaffected, duration is now set to 5 days:
* Start date: Monday, January 6, 2025
* Finish date: Friday, January 10, 2025
* Duration: 5
<br>
#### Scenario 9 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: 4
* Change
* User enters the finish date of Friday, January 10, 2025 (finish date in focus).
* Expected result
* The start date is set to Tuesday, January 7, 2025 (derived from duration):
* Start date: Tuesday, January 7, 2025
* Finish date: Friday, January 10, 2025
* Duration: 4
<br>
#### Scenario 10 π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* User enters the start date of Tuesday, January 7, 2025
* Expected result
* Duration is set to 3 (derived from start date):
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
<br>
#### Scenario 11 π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* The user moves the drag handle on the left border (start date) of the box representing the work package in Gantt chart and Team planner one day to the right (to Tuesday, Jan 7, 2025)
* Expected result
* The duration is reduced to 3 days
* The start date is set Tuesday, January 7, 2025
* The finish date is left unchanged
<br>
#### Scenario 12 (GANTT/Team planner) π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Wednesday, January 8, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **right** so start date is Wednesday, January 8, 2025
* Expected result
* The duration is maintained. Start state is now January 8, 2025 (as set by drag), finish date is set to Friday, January 10, 2025 (derived based on duration).
<br>
#### Scenario 12bis (GANTT/Team planner) π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: Friday, January 10, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **left** so start date is Monday, January 6, 2025.
* Expected result
* The duration is maintained. Start state is now Monday, January 6, 2025 (as set by drag), finish date is set to Wednesday, January 8, 2025 (derived based on duration)
<br>
#### Scenario 13 π‘ \[Chris: invalid preconditions. Fix by changing setup start date to Jan 2 and setup end date to Jan 3, (then setting start date to Jan 5 _will be_ after original due date)\]
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Wednesday, February 5, 2025 (note that this is _after_ the original finish date)
* Expected result
* The start date is set to Wednesday, February 5
* The finish date is cleared
* Duration is cleared
<br>
#### Scenario 13a π’
* Setup
* Start date: Thursday, January 23, 2025
* Finish date: empty
* Duration: empty
* Today's date is Tuesday, January 21, 2025
* Change
* The user clicks the "Today" link under the Finish date field
* Expected result
* The finish date is set to Tuesday, February 21, 2021
* The start date is cleared
* Duration is cleared
<br>
#### Scenario 14 π΄ \[Chris: this contradicts scenario 7, and it is unexpected IMHO. It should change start date, keep end date, and derive duration\]
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Monday, January 6, 2025 (note that this is _before_ the original start date).
* Expected result
* The start date is now Monday, January 6, 2025
* The finish date is now Wednesday, January 8, 2025
* The duration is conserved: 3 days.
<br>
#### Scenario 15 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Tuesday, January 14, 2025
* Duration: 4
* Include non-working days: off
* Change
* Include non-working days: on
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Sunday, January 12, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 16 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Sunday, January 12, 2025
* Duration: 4
* Include non-working days: on
* Change
* Include non-working days: off
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (4 days)
####
#### Scenario 17 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (2 days)
<br>
#### Scenario 18 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Tuesday, January 21, 2025
* Include non-working days: on
* Duration: 11 days
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Monday, January 27, 2025
* Duration is conserved (11 days)
####
#### Scenario 19 π’ +β
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: -
* Include non-working days: on
* Duration: -
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is still empty
* Duration is still empty
* β \[open\] if "Include non-working days" is switched again, does the start date go back to Saturday Jan 11?
<br>
#### Scenario 20 π’
* Setup
* Start date: -
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: -
* Change
* Include non-working days: off
* Expected result
* Start date is still empty
* Finish date is Monday, February 13, 2025
* Duration is still empty
####
#### Scenario 21a π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Clear start date
* Expected result
* Start date is removed
* Duration is removed
* Finish date is maintained at Sunday, January 12, 2025
####
#### Scenario 21b π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Finish date is cleared
* Expected result
* Start date is maintained at Saturday, January 11, 2025
* Finish date is removed
* Duration is removed
<br>
#### \[review\] Scenario 22a π‘
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Note: this is one day _earlier_ than the current start date
* Expected result
* Start date is updated to at Wednesday, January 8, 2025 (the clicked date)
* Finish date is set to Thursday, January 9, 2025 (the previous start date)
* \[cchallenge\] Finish date should clear.
* π‘ No, it should not be cleared IMO. I think setting start and finish dates to Wed 8 and Thu 9 is a good assumption. That's also the behavior we currently have.
* Focus is set to start date
* \[challenge\] Focus is on finish date, because it's now in range date with a new start date.
* π’ Yes, I too think the focus should be on the finish date: the user just clicked on Wed 8, and Wed 8 is start date, so if the user wants to pick another date, we can assume it's a finish date (the user won't want to change the start date they just picked).
* Duration is derived as 2 days
* \[challenge\] It should clear
* π‘ No, it should not be cleared IMO (same as above). I think setting start and finish dates to Wed 8 and Thu 9 is a good assumption. So duration is 2 days. That's also the behavior we currently have.
####
#### Scenario 22b π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Friday, January 10, 2025
* Note: this is one dayΒ _after_ than the current start date
* Expected result
* Start date stays at Thursday, January 9, 2025
* Finish date is set to Friday, January 10, 2025
* Duration is derived as 2 days
* Focus is set to start date
* \[open\] Challenge?
* π’ yes, sounds good for me
####
#### \[review\] Scenario 23a π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Friday, January 10, 2025
* Expected result
* Start date is set to Thursday, January 9, 2025 (the previous finish date)
* \[challenge\] Start date is set to Fri, Jan 10, 2025 (the clicked date)
* π’ Yes, should be like 22a anyway: a date is Thu 9, the second date is Fri 10, so start and end dates are Thu 9 and Fri 10.
* Finish date is updated to Friday, January 10, 2025 (the clicked date)
* \[challenge\] Finish date is cleared
* π’ Yes, finish date is Fri 10
* Duration is derived as 2 days
* \[challenge\] Duration is cleared
* π’ Yes, duration is 2 days
* Focus is set to start date
* \[challenge\] Focus is on finish date, because it's now in range date with a new start date.
* π’ yes, focus is on start date: the date that has not been clicked, so that it can be changed.
<br>
#### Scenario 23b π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Expected result
* Start date is set to Wednesday, January 8, 2025 (the clicked date)
* Finish date remains Thursday, January 9, 2025
* Duration is derived as 2 days
* Focus is set to start date
* \[Challenge\] Does this make sense?
* π’ Yes, perfect sense: 2 dates are picked, they are set as start and end dates. dates.Β
<br>
### New scenarios added for automatic scheduling
####
#### Scenario 24a: Single date change (Start date) π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With start date in focus, click on Friday, January 10, 2025
* Expected result
* Start date is now Friday, January 10, 2025 (the clicked date)
* Finish date remains empty
* Duration remains empty
* Focus is moved to Finish date (range mode with new start date)
#### Scenario 24b: Single date change (Finish date) π’
* Setup
* Start date: -
* Finish date: Friday, January 10, 2025
* Duration: -
* Change
* With finish date in focus, click on Thu, Jan 16, 2025
* Expected result
* Finish date is now Thu, Jan 16, 2025 (the clicked date)
* Start date remains empty
* Duration remains empty
* Focus is moved to Start date (range mode with new finish date)
#### Scenario 25: Manual to automatic with no predecessors or children π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Switch to automatic
* Expected result:
* Not possible (no predecessors or children)
<br>
#### Scenario 26: Add a predecessor π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add 1 predecessor:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (one day after predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 1 predecessor
<br>
#### Scenario 27a: Manual to automatic with multiple predecessors (no lag) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 0
* Add predecessor B:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (closest predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 27b: Manual to automatic with multiple predecessors (with lag) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 14
* Add predecessor B:
* Finish date: Thu, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Tue, Jan 14, 2025 (closest predecessor, because of lag)
* Finish date: Thu, Jan 16, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 28: Add children (parent in manual originally; children all manual, all in working days only) π΄ \[Chris: not a date picker scenario\]
* Setup (parent)
* Start date: Thu, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: on
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-24 Jan, 2025
* Working days only: on
* Duration: 4
* Mode: Manual
* Expected result
* Start date: Tue, Jan 16, 2025
* Finish date Sun, Jan 24, 2025
* Mode: Automatic (automatically-set)
* \[open\] Should the switch to automatic mode be triggered even if the work package was previously in manual? How do we know if the user wanted it to be in manual (even after the addition of children) or if it was just in manual by default? Should there be a warning asking if the now-parent work package should automatically switch to automatic?
* Working days only: disabled
* Duration: 7
<br>
<br>
#### Scenario 29: Add children (parent in manual originally; children all manual, mixed working days) π΄ \[Chris: not a date picker scenario\]
* Setup
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (automatically-set)
* \[open\] Same question as above. How do we operate this switch to automatic?
* Working days only: disabled
* Duration: 9 or 11
* \[open\] How do we calculate duration for parent in mixed working days onlyΒ mode?
<br>
#### Scenario 30: Add children to a successor (start date change derived children instead of predecessor) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 15, 2025
* Finish date: Sun, Jan 17, 2025
* Duration: 2
* Mode: Automatic
* Working days only: on
* Banner: Start date derived from predecessor
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
<br>
#### Scenario 30: Automatically-scheduled successor with children loses all its children π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Change
* Delete both children
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* \[open\] In this case, it doesn't make sense to disable it anymore, but what do we set it to? It was previously mixed.
* Duration: 9 or 11
* \[open\] What happens to duration?
* Banner: Dates derived from predecessor
<br>
#### Scenario 32: Switch parent with predecessor and children to manual π‘ \[Chris: wrong preconditions: if the parent has a child with working days only: off, then it also has working days only: off, and the first child being automatic should start ASAP after the parent predecessor, so it should start on Mon 27 Jan, and then Child 2 dates are wrong too, and parent dates as well\]
* Setup:
* Start date: Thu, Jan 16, 15, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 9 or 11
* Mode: Automatic
* Working days only: on π‘
* Relations (3):
* Predecessor:
* Start date: Fri Jan 16, 2025
* Finish date: Mon, Jan 26, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 16β20 Jan, 2025 π‘
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
* Change:
* Change mode of this parent to manual
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 9 or 11
* Mode: Manual
* Working days only: on π‘
* Relations (3):
* Predecessor: _(unchanged)_
* Start date: Thu, Jan 15, 2025
* \[open\] Maintained, why?
* Finish date: Sun, Jan 26, 2025
* \[open\] Maintained, why?
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 15β17 Jan, 2025 (now follows the predecessor)
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
**STILL A WORK IN PROGRESS**
This work package describes how values for the start date, the finish date and duration should change in response to changes to any of one of them. We created a [similar document with scenarios previously](https://community.openproject.org/wp/43539) when we added duration to the date picker, which made it easier:
* For devs to write test cases
* Document behaviour
* Use it for testing
Now with the upcoming [introduction of automatic scheduling](https://community.openproject.org/wp/59539), we need to reevaluate if the following scenarios are still relevant, if the behaviour is consistent and what news scenarios need to be added.
**THIS DOCUMENT IS A WORK IN PROGRESS, PLEASE DO NOT USE IT UNTIL THE STATUS IS SET TO 'TO BE SCHEDULED' or 'SCHEDULED'.**
### Scenarios (updated)
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 1 π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: empty
* Duration: empty
* Include non-working days: off
* Change
* User enters a duration of 10 days
* Expected result:
* The finish date is set Tuesday, January 21 2025 (derived)
<br>
#### Scenario 2 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: empty
* Change
* User enters a duration of 10 days
* Expected result:
* No date is added
<br>
#### Scenario 3 π’
* Setup
* Start date: empty
* Finish date: Tuesday, January 21 2025
* Duration: empty
* Include non-working days: off
* Change
* User enters a duration of 10 days
* Expected result:
* The start date is set to Wednesday, January 8, 2025 (derived)
<br>
#### Scenario 4 π’
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Friday, January 24, 2025
* Duration: 10 days
* Include non-working days: off
* Change
* User changes duration to 11 days
* Expected result:
* The finish date is changed to Monday, January 27, 2025
<br>
#### Scenario 5 π‘ \[Chris: setup dates are invalid, fix with: start date = Monday 6\]
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Monday, January 20, 2025
* Duration: 11
* Non-working days: off.
* Change
* User changes duration to 10 days
* Expected result:
* The finish date is changed to Friday, January 17, 2025
<br>
#### Scenario 6 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by clearing duration field
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 6a π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by focusing duration field and clicking the "x"
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 7 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the start date to Tuesday, January 7, 2025
* Expected result
* Finish date is maintained, duration is automatically adjusted to 3 days (derived; logic = changing one date when the other is present affects duration vs. move the second date).
* \[open\] Challenge?
* π’ \[Chris\] Yes! I totally approve this scenario. I think that's the correct behavior. Before, it would have kept the duration and change the end date, which I always found counter-intuitive.
<br>
#### Scenario 8 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the finish date to January 10, 2025
* Expected result
* Start date is unaffected, duration is now set to 5 days:
* Start date: Monday, January 6, 2025
* Finish date: Friday, January 10, 2025
* Duration: 5
<br>
#### Scenario 9 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: 4
* Change
* User enters the finish date of Friday, January 10, 2025 (finish date in focus).
* Expected result
* The start date is set to Tuesday, January 7, 2025 (derived from duration):
* Start date: Tuesday, January 7, 2025
* Finish date: Friday, January 10, 2025
* Duration: 4
<br>
#### Scenario 10 π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* User enters the start date of Tuesday, January 7, 2025
* Expected result
* Duration is set to 3 (derived from start date):
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
<br>
#### Scenario 11 π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* The user moves the drag handle on the left border (start date) of the box representing the work package in Gantt chart and Team planner one day to the right (to Tuesday, Jan 7, 2025)
* Expected result
* The duration is reduced to 3 days
* The start date is set Tuesday, January 7, 2025
* The finish date is left unchanged
<br>
#### Scenario 12 (GANTT/Team planner) π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Wednesday, January 8, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **right** so start date is Wednesday, January 8, 2025
* Expected result
* The duration is maintained. Start state is now January 8, 2025 (as set by drag), finish date is set to Friday, January 10, 2025 (derived based on duration).
<br>
#### Scenario 12bis (GANTT/Team planner) π΄ \[Chris: scenario is valid, but it's not related to date picker. Fix: move to another wp\]
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: Friday, January 10, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **left** so start date is Monday, January 6, 2025.
* Expected result
* The duration is maintained. Start state is now Monday, January 6, 2025 (as set by drag), finish date is set to Wednesday, January 8, 2025 (derived based on duration)
<br>
#### Scenario 13 π‘ \[Chris: invalid preconditions. Fix by changing setup start date to Jan 2 and setup end date to Jan 3, (then setting start date to Jan 5 _will be_ after original due date)\]
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Wednesday, February 5, 2025 (note that this is _after_ the original finish date)
* Expected result
* The start date is set to Wednesday, February 5
* The finish date is cleared
* Duration is cleared
<br>
#### Scenario 13a π’
* Setup
* Start date: Thursday, January 23, 2025
* Finish date: empty
* Duration: empty
* Today's date is Tuesday, January 21, 2025
* Change
* The user clicks the "Today" link under the Finish date field
* Expected result
* The finish date is set to Tuesday, February 21, 2021
* The start date is cleared
* Duration is cleared
<br>
#### Scenario 14 π΄ \[Chris: this contradicts scenario 7, and it is unexpected IMHO. It should change start date, keep end date, and derive duration\]
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Monday, January 6, 2025 (note that this is _before_ the original start date).
* Expected result
* The start date is now Monday, January 6, 2025
* The finish date is now Wednesday, January 8, 2025
* The duration is conserved: 3 days.
<br>
#### Scenario 15 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Tuesday, January 14, 2025
* Duration: 4
* Include non-working days: off
* Change
* Include non-working days: on
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Sunday, January 12, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 16 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Sunday, January 12, 2025
* Duration: 4
* Include non-working days: on
* Change
* Include non-working days: off
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (4 days)
####
#### Scenario 17 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (2 days)
<br>
#### Scenario 18 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Tuesday, January 21, 2025
* Include non-working days: on
* Duration: 11 days
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Monday, January 27, 2025
* Duration is conserved (11 days)
####
#### Scenario 19 π’ +β
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: -
* Include non-working days: on
* Duration: -
* Change
* Include non-working days: off
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is still empty
* Duration is still empty
* β \[open\] if "Include non-working days" is switched again, does the start date go back to Saturday Jan 11?
<br>
#### Scenario 20 π’
* Setup
* Start date: -
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: -
* Change
* Include non-working days: off
* Expected result
* Start date is still empty
* Finish date is Monday, February 13, 2025
* Duration is still empty
####
#### Scenario 21a π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Clear start date
* Expected result
* Start date is removed
* Duration is removed
* Finish date is maintained at Sunday, January 12, 2025
####
#### Scenario 21b π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Include non-working days: on
* Duration: 2
* Change
* Finish date is cleared
* Expected result
* Start date is maintained at Saturday, January 11, 2025
* Finish date is removed
* Duration is removed
<br>
#### \[review\] Scenario 22a π‘
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Note: this is one day _earlier_ than the current start date
* Expected result
* Start date is updated to at Wednesday, January 8, 2025 (the clicked date)
* Finish date is set to Thursday, January 9, 2025 (the previous start date)
* \[cchallenge\] Finish date should clear.
* π‘ No, it should not be cleared IMO. I think setting start and finish dates to Wed 8 and Thu 9 is a good assumption. That's also the behavior we currently have.
* Focus is set to start date
* \[challenge\] Focus is on finish date, because it's now in range date with a new start date.
* π’ Yes, I too think the focus should be on the finish date: the user just clicked on Wed 8, and Wed 8 is start date, so if the user wants to pick another date, we can assume it's a finish date (the user won't want to change the start date they just picked).
* Duration is derived as 2 days
* \[challenge\] It should clear
* π‘ No, it should not be cleared IMO (same as above). I think setting start and finish dates to Wed 8 and Thu 9 is a good assumption. So duration is 2 days. That's also the behavior we currently have.
####
#### Scenario 22b π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Friday, January 10, 2025
* Note: this is one dayΒ _after_ than the current start date
* Expected result
* Start date stays at Thursday, January 9, 2025
* Finish date is set to Friday, January 10, 2025
* Duration is derived as 2 days
* Focus is set to start date
* \[open\] Challenge?
* π’ yes, sounds good for me
####
#### \[review\] Scenario 23a π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Friday, January 10, 2025
* Expected result
* Start date is set to Thursday, January 9, 2025 (the previous finish date)
* \[challenge\] Start date is set to Fri, Jan 10, 2025 (the clicked date)
* π’ Yes, should be like 22a anyway: a date is Thu 9, the second date is Fri 10, so start and end dates are Thu 9 and Fri 10.
* Finish date is updated to Friday, January 10, 2025 (the clicked date)
* \[challenge\] Finish date is cleared
* π’ Yes, finish date is Fri 10
* Duration is derived as 2 days
* \[challenge\] Duration is cleared
* π’ Yes, duration is 2 days
* Focus is set to start date
* \[challenge\] Focus is on finish date, because it's now in range date with a new start date.
* π’ yes, focus is on start date: the date that has not been clicked, so that it can be changed.
<br>
#### Scenario 23b π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Expected result
* Start date is set to Wednesday, January 8, 2025 (the clicked date)
* Finish date remains Thursday, January 9, 2025
* Duration is derived as 2 days
* Focus is set to start date
* \[Challenge\] Does this make sense?
* π’ Yes, perfect sense: 2 dates are picked, they are set as start and end dates.
<br>
### New scenarios added for automatic scheduling
####
#### Scenario 24a: Single date change (Start date) π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With start date in focus, click on Friday, January 10, 2025
* Expected result
* Start date is now Friday, January 10, 2025 (the clicked date)
* Finish date remains empty
* Duration remains empty
* Focus is moved to Finish date (range mode with new start date)
#### Scenario 24b: Single date change (Finish date) π’
* Setup
* Start date: -
* Finish date: Friday, January 10, 2025
* Duration: -
* Change
* With finish date in focus, click on Thu, Jan 16, 2025
* Expected result
* Finish date is now Thu, Jan 16, 2025 (the clicked date)
* Start date remains empty
* Duration remains empty
* Focus is moved to Start date (range mode with new finish date)
#### Scenario 25: Manual to automatic with no predecessors or children π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Switch to automatic
* Expected result:
* Not possible (no predecessors or children)
<br>
#### Scenario 26: Add a predecessor π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add 1 predecessor:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (one day after predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 1 predecessor
<br>
#### Scenario 27a: Manual to automatic with multiple predecessors (no lag) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 0
* Add predecessor B:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (closest predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 27b: Manual to automatic with multiple predecessors (with lag) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 14
* Add predecessor B:
* Finish date: Thu, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Tue, Jan 14, 2025 (closest predecessor, because of lag)
* Finish date: Thu, Jan 16, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 28: Add children (parent in manual originally; children all manual, all in working days only) π΄ \[Chris: not a date picker scenario\]
* Setup (parent)
* Start date: Thu, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: on
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-24 Jan, 2025
* Working days only: on
* Duration: 4
* Mode: Manual
* Expected result
* Start date: Tue, Jan 16, 2025
* Finish date Sun, Jan 24, 2025
* Mode: Automatic (automatically-set)
* \[open\] Should the switch to automatic mode be triggered even if the work package was previously in manual? How do we know if the user wanted it to be in manual (even after the addition of children) or if it was just in manual by default? Should there be a warning asking if the now-parent work package should automatically switch to automatic?
* Working days only: disabled
* Duration: 7
<br>
<br>
#### Scenario 29: Add children (parent in manual originally; children all manual, mixed working days) π΄ \[Chris: not a date picker scenario\]
* Setup
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (automatically-set)
* \[open\] Same question as above. How do we operate this switch to automatic?
* Working days only: disabled
* Duration: 9 or 11
* \[open\] How do we calculate duration for parent in mixed working days onlyΒ mode?
<br>
#### Scenario 30: Add children to a successor (start date change derived children instead of predecessor) π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Wed, Jan 15, 2025
* Finish date: Sun, Jan 17, 2025
* Duration: 2
* Mode: Automatic
* Working days only: on
* Banner: Start date derived from predecessor
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
<br>
#### Scenario 30: Automatically-scheduled successor with children loses all its children π΄ \[Chris: not a date picker scenario\]
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Change
* Delete both children
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* \[open\] In this case, it doesn't make sense to disable it anymore, but what do we set it to? It was previously mixed.
* Duration: 9 or 11
* \[open\] What happens to duration?
* Banner: Dates derived from predecessor
<br>
#### Scenario 32: Switch parent with predecessor and children to manual π‘ \[Chris: wrong preconditions: if the parent has a child with working days only: off, then it also has working days only: off, and the first child being automatic should start ASAP after the parent predecessor, so it should start on Mon 27 Jan, and then Child 2 dates are wrong too, and parent dates as well\]
* Setup:
* Start date: Thu, Jan 16,
* Finish date: Sun, Jan 26, 2025
* Duration:
* Mode: Automatic
* Working days only: on π‘
* Relations (3):
* Predecessor:
* Start date: Fri Jan 16, 2025
* Finish date: Mon, Jan 26, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 16β20 Jan, 2025 π‘
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
* Change:
* Change mode of this parent to manual
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date: Sun, Jan 26, 2025
* Duration:
* Mode: Manual
* Working days only: on π‘
* Relations (3):
* Predecessor: _(unchanged)_
* Start date: Thu, Jan 15, 2025
* \[open\] Maintained, why?
* Finish date: Sun, Jan 26, 2025
* \[open\] Maintained, why?
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 15β17 Jan, 2025 (now follows the predecessor)
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
**STILL A WORK IN PROGRESS**