Implement Request Statuses
Description
Environment
Potential Workaround
Attachments
blocks
is blocked by
relates to
Checklist
hideTestRail: Results
Activity
Tania Hewes March 23, 2018 at 2:30 PM
and UICHKOUT-406 created for beautifying the popup for scenario 4.
Tania Hewes March 23, 2018 at 1:08 PMEdited
- I marked Scenario 4 as because we do get a message about "User checking out must be requester awaiting pickup" and the check out is not allowed, but it's not a user-friendly modal. I didn't specify a modal, though, so let me know if I should mark this one done and create a new issue, or if you'd rather I include it in this issue.
Marc Johnson March 7, 2018 at 4:26 PMEdited
Hi
I thought I’d write up the expanded scenarios I’ve used for and , based upon the original ones you wrote, to see if there is anything missing.
The delivery fulfilment preference scenarios are there to demonstrate the current intended behaviour prior to implementing fulfilment for these, and to act as a structure for making those changes.
I have also looked at a scenario where the requests could be created out of order, in order to verify the ordering of the queue.
I tried writing scenarios for multiple delivery requests, however these didn’t seem to add much (in addition to the mixed fulfilment preference scenarios) until they are fulfillable (and those will look similar to the multiple hold fulfilment requests scenarios with a few extra steps)
There are also variations on these scenarios for when the request type is different (either hold or recall) to check that the correct Checked out
status variation is used, I’ve omitted those as we discussed them recently and would be mostly repetitions of the above.
There are some scenarios about repeated updates to loans or unusual creation that I haven’t covered because they span broader scope than these changes.
Single Hold Shelf Fulfilment Request
Request is Awaiting Pickup Upon Check In
Given Small Angry Planet has been loaned to James
And Jessica has made a hold shelf request for it
When James returns it
Then Jessica’s request changes status to Open - Awaiting pickup
And the item status changes to Awaiting pickup
Request is Fulfilled Upon Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
(omitting that it was previously loaned in order for the request to be made)
When Jessica checks it out
Then Jessica’s request changes status to Closed - Filled
And the item status changes to Checked out
Request is Fulfilled Upon Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
And Jessica has the item checked out
When Jessica checks the item in
Then Jessica’s request stays Closed - Filled
And the item status changes to Available
Other Patron Attempts Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
When Rebecca attempts to checks it out
Then the check out is refused
And Jessica’s request is still Open - Awaiting pickup
And the item status is still Awaiting pickup
Single Delivery Fulfilment Request
Request is Still Open Upon Check In
Given Small Angry Planet has been loaned to James
And Jessica has made a delivery request for it
When James returns it
Then Jessica’s request remains Open - Not yet filled
And the item status changes to Available
Request is Still Open Upon Check Out
Given Jessica has made a delivery request for Small Angry Planet
When Jessica checks it out
Then Jessica’s request remains Open - Not yet filled
And the item status changes to Checked out - Held
(if the request type is Hold
, or Checked out - Recalled
if the request type is Recall
)
Other Patron Attempts Check Out
Given Jessica has made a delivery request for Small Angry Planet
When Rebecca checks it out
Then Jessica’s request remains Open - Not yet filled
And the item status changes to Checked out - Held
Multiple Hold Shelf Fulfilment Requests
Highest Priority Hold Shelf Request is Awaiting Pickup Upon Check In
Given Small Angry Planet has been loaned to James
And Jessica has made a hold shelf request for it
And Steve has made a subsequent hold shelf request
When James returns it
Then Jessica’s request changes status to Open - Awaiting pickup
And Steve’s request changes status to Open - Not yet filled
And the item status changes to Awaiting pickup
Highest Priority Hold Shelf Request is Fulfilled Upon Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
And Steve has made a subsequent hold shelf request for the same item
When Jessica checks out the item
Then Jessica’s request changes status to Closed - Filled
And Steve’s request remains Open - Not yet filled
And the item status changes to Checked out - Held
Highest Priority Hold Shelf Requester Checks In
Given Jessica has made a hold shelf request for Small Angry Planet
And Steve has made a subsequent hold shelf request for the same item
And Jessica has checked out the item
When Jessica checks it back in
Then Jessica’s request stays Closed - Filled
And Steve’s request changes status to Open - Awaiting pickup
And the item status changes to Awaiting pickup
Other Patron Attempts Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
And Steve has made a subsequent hold shelf request
When Rebecca attempts to checks it out
Then the check out is refused
And Jessica’s request is still Open - Awaiting pickup
And Steve’s request is still Open - Not yet filled
And the item status is still Awaiting pickup
Other Requester Attempts Check Out
Given Jessica has made a hold shelf request for Small Angry Planet
And Steve has made a subsequent hold shelf request
When Steve attempts to checks it out
Then the check out is refused
And Jessica’s request is still Open - Awaiting pickup
And Steve’s request is still Open - Not yet filled
And the item status is still Awaiting pickup
Multiple Mixed Fulfilment Requests
Highest Priority Hold Shelf Request is Awaiting Pickup Upon Check In
Given Small Angry Planet has been loaned to James
And Rebecca has made a delivery shelf request for it
And Jessica has made a subsequent hold shelf request
And Steve has made a subsequent hold shelf request
When James returns it
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request changes status to Open - Awaiting pickup
And Steve’s request changes status to Open - Not yet filled
And the item status changes to Awaiting pickup
Highest Priority Hold Shelf Request is Fulfilled Upon Check Out
Given Rebecca has made a delivery shelf request for Small Angry Planet
And Jessica has made a subsequent hold shelf request for the same item
And Steve has made a subsequent hold shelf request for the same item
When Jessica checks out the item
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request changes status to Closed - Filled
And Steve’s request remains Open - Not yet filled
And the item status changes to Checked out - Held
Highest Priority Hold Shelf Requester Checks In
Given Rebecca has made a delivery shelf request for Small Angry Planet
And Jessica has made a hold shelf request for the same item
And Steve has made a subsequent hold shelf request for the same item
And Jessica has checked out Small Angry Planet
When Jessica checks it back in
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request stays Closed - Filled
And Steve’s request changes status to Open - Awaiting pickup
And the item status changes to Awaiting pickup
Other Patron Attempts Check Out
Given Rebecca has made a delivery shelf request for Small Angry Planet
And Jessica has made a hold shelf request for the same item
And Steve has made a subsequent hold shelf request
When Charlotte attempts to checks it out
Then the check out is refused
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request is still Open - Awaiting pickup
And Steve’s request is still Open - Not yet filled
And the item status is still Awaiting pickup
Delivery Requester Attempts Check Out
Given Rebecca has made a delivery shelf request for Small Angry Planet
And Jessica has made a hold shelf request for the same item
And Steve has made a subsequent hold shelf request
When Rebecca attempts to checks it out
Then the check out is refused
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request is still Open - Awaiting pickup
And Steve’s request is still Open - Not yet filled
And the item status is still Awaiting pickup
Other Hold Shelf Requester Attempts Check Out
Given Rebecca has made a delivery shelf request for Small Angry Planet
And Jessica has made a hold shelf request for the same item
And Steve has made a subsequent hold shelf request
When Steve attempts to checks it out
Then the check out is refused
Then Rebecca’s request stays Open - Not yet filled
And Jessica’s request is still Open - Awaiting pickup
And Steve’s request is still Open - Not yet filled
And the item status is still Awaiting pickup
Closed Requests
Closed Requests Do Not Stop Check Out To Patron
Given Jessica has made a hold shelf request for Small Angry Planet that has been fulfilled
When Steve checks it out
Then Jessica’s request remains Closed - Filled
And the item status changes to Checked out
Closed Requests Do Not Stop Check Out To Previous Requester
Given Jessica has made a hold shelf request for Small Angry Planet that has
been fulfilled
And Steve has made a hold shelf request for the same item has
been fulfilled
When Steve checks it out
Then Jessica’s request remains Closed - Filled
And Steve’s request remains Closed - Filled
And the item status changes to Checked out
Tania Hewes February 14, 2018 at 10:20 PM
I am attempting to summarize my conversation with about item & request statuses in the context of and .
(I am also changing "active" to "open" in the story above because it seems to be a clearer term to use)
1. Hold and Recall requests can only be made for items which are currently checked out (i.e. has an open loan / in one of the three "Checked out" states)
2. There can be multiple open requests for an item at any given time. An open request is a request that is in one of the open states (all of which start with “Open”)
3. When we have multiple open requests, a priority queue is formed from them. The initial way of determining the priority is by age, with the oldest request being the highest priority.
4. The general flow of a request being fulfilled to the hold shelf (the scope of and ) is:
"Open - not yet filled", triggered when the request is first created (may change item status to "Checked out - Recalled" or "Checked out - Held" depending upon request type, existing behaviour)
"Open - awaiting pickup", triggered when the item requested is returned by the current loanee and the request is top of the queue (changes item status to "Awaiting pickup")
"Closed - filled", triggered when the item is loaned to the requesting patron (item status changes to appropriate "Checked out" status depending upon if there are other open requests)
5. The presence of one or more open requests impacts:
The (circulation) status of an item
Whether a loan can be renewed (beyond the scope of and )
Who a returned item can be loaned to
6. A returned item with an open request for fulfillment to the hold shelf can only be subsequently loaned to the highest priority requesting patron
A returned item that has been set to "Awaiting pickup" status can only be loaned to the requester of the associated "Open - awaiting pickup" request
This one is stated two ways because we went back and forth on the implication of wording, but the essence is (again stated two ways because they seem subtly different to me):
Both the determination of the status (which is what potentially blocks the check out) and who the item can be loaned to, is dependent upon the request at the top of the priority queue
The status is determined (at check in) by the request being at the top of the queue. Who it can be loaned to is determined by the item's "Awaiting pickup" status + the requester in the associated "Open - awaiting pickup" request.
Marc Johnson February 12, 2018 at 12:58 PMEdited
Hi Tania,
Thank you for sharing the document, that is useful broader context for this area.
I’ve started looking at this (in conjunction with and wanted to reflect my understanding and ask a few questions.
Reflection
For the scope of this work, we want to introduce the following request states:
Open - Not yet filled
Open - Awaiting pickup
Closed - Filled
All requests (Hold
, Recall
and Page
types) should be in the initial state of Open - Not yet filled
Changes to the item (circulation) status are out of scope for this change and part of
Does that fit with your understanding of this change?
Questions
What is an active request? Is it a request not in the Closed - Filled
state (and later the other closed states)?
Scenario 2 describes the change in request status when the fulfilment preference is Hold shelf
.
If the request has any other fulfilment preference (the only other choice at the moment is Delivery
), no change in request status should occur (and hence scenario 3 and 4 only apply to Hold shelf
delivery preferences)? And the behaviour for other fulfilment preferences will be covered in other issues.
In the above examples, is request X the only request for an item, or are these scenarios intended to also reflect multiple (active) requests for the same item, and request X is the oldest request (as this is the initial request queue policy)? Looking at I'm going to assume it is the latter
Purpose:
To implement statuses for requests.
Scenarios:
Scenario
Given open request X for item Y and item Y has not been checked in to fill the request
Then request X's request status should be "Open - Not yet filled"
Scenario
Given open request X for item Y with:
Request status = "Open - Not yet filled"
Request Fulfillment preference = Hold shelf
When item Y is checked in
Then request X’s request status should change to “Open - Awaiting pickup”
Scenario
Given open request X for item Y with:
Request status = "Open - Awaiting pickup"
When item Y checked out to the requester
Then request X’s request status should change to “Closed - Filled”
Scenario
Given open request X for item Y with:
Request status = "Open - Awaiting pickup"
When item Y is checked out to a user who is NOT the requester
Then a message should appear "This item is awaiting pickup by a different user"
No check out will occur
The request status should remain "Open - Awaiting pickup"