223: Review and approve submitted requisitions
Test Case #:223 | Test Case Name: Review and approve submitted requisitions |
System: OpenLMIS | Subsystem: requisition |
Test case designed by: Paulina Borowa | Design Date:11.08.2016 |
Short description: Supervisor can access/view the submitted requisitions based on the supervisory hierarchy (which facilities the user is assigned to review/approve) -all requisition details are visable -the supervisor can see comments from the requisitioner (and authorizer when appropriate) -the supervisor can make changes to the "Approved Quantity" attribute -the supervisor can input text (string 250 characters) in the "Remarks" attribute -the supervisor can insert comments on the approved requistion -the supervisor can see comments made by the requisitioner and/or authorizer receive. Allows supervisor (or appropriate personnel) to review and approve submitted requisitions |
|
Pre – conditions: |
Step | Action | Expected system response | Comment |
1 | Create geographicLevels In URL: http://localhost:8080/api/geographicLevels/?access_token=f77791e5-5cb7-4787-92f9-b55b6d971791 Method: Post: Example Body: { "code": "levelcode", "name": "levelname", "levelNumber": "32" } | Status 201 created id: a8db3899-896f-4e40-b912-f38a6af5b3ce | |
2 | Create geographicZone In URL: http://localhost:8080/api/geographicZones/?access_token=f77791e5-5cb7-4787-92f9-b55b6d971791 Method: Post: Example Body: { "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } } | Status 201 Created , id: 3141d995-1f69-4400-be30-64ed564a0253 | |
3 | Create facilityType In URL: http://localhost:8080/api/facilityTypes/?access_token=b30d1dcf-9d04-4b10-a3a0-5f29b96b8a22 Method: Post Example Body: { "code": "typecode", "name": "typename" } | Status 201 Created , id: d734497f-7e46-4915-9f05-83c0432fc158 | |
4 | Create facility In URL: http://localhost:8080/api/facilities/?access_token=b30d1dcf-9d04-4b10-a3a0-5f29b96b8a22 Method Post Example body: { "code": "facilitycode", "name": "facilityname", "geographicZone": { "id": "3141d995-1f69-4400-be30-64ed564a0253", "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } }, "type": { "id": "d734497f-7e46-4915-9f05-83c0432fc158", "code": "typecode", "name": "typename" }, "active": true, "enabled": true } | Status 201 Created, id: fb9ce60f-6557-4651-b9b9-efefccf76251 | |
5 | Create program: In URL: http://localhost:8080/api/programs/?access_token=dd27b91f-91ae-4d9e-9f61-caf3abe870f7 Method: Post Example Body: { "code": "programcode", "name": "programname", "periodsSkippable": true } | Status 201 Created, id: bebd5da3-b905-45b7-a474-85c3ba655f9d | |
6 | Create schedule In URL: http://localhost:8080/api/processingSchedules/?access_token=f77791e5-5cb7-4787-92f9-b55b6d971791 Method: Post Example Body: { "code": "schedulecode", "name": "schedulename" } | Status 201 Created, id: 79650728-fb5e-4413-ba1e-c58e042415f9 | |
7 | Create periods In URL: http://localhost:8080/api/processingPeriods/?access_token=075fd2f4-0e58-4118-b673-3c29359c1a28 Method: Post Example Body: { "processingSchedule": { "id":"865f24e7-9496-4dc3-86d4-f00554da539b", "code": "schedulecode", "name": "schedulename" }, "name": "periodname", "description": "abc", "startDate": "2016-09-05", "endDate": "2016-09-15" } | Status 201 Created, "id": f9378770-e1f9-4dbc-85b2-482ce55cb776 | |
8 | Create RequisitionLine URL: http://localhost:8080/api/requisitionLines/?access_token=a5c523c7-914e-4d12-8a55-78db5f2f57b6 Method: POST Body: { "id": "fc93a929-d62e-4fff-9f8f-4ad9df0a4e60", "product": { "id": "1752b457-0a4b-4de0-bf94-5a6a8002427e", "code": "productCode", "primaryName": "productName", "dispensingUnit": "1", "dosesPerDispensingUnit": 1, "packSize": 1, "packRoundingThreshold": 1, "roundToZero": true, "active": true, "fullSupply": true, "tracer": true, "productCategory": { "id": "3c840e6c-a2e6-482f-b794-90379fcbfe00", "code": "categorycode", "name": "categoryname", "displayOrder": 32 } }, "requisition": null, "stockInHand": 2, "beginningBalance": 2, "totalReceivedQuantity": 2, "totalLossesAndAdjustments": 2, "stockOnHand": 2, "requestedQuantity": 2, "totalConsumedQuantity": 2, "requestedQuantityExplanation": "abc", "remarks": "sometest", "approvedQuantity": 2 } | id: 1275b316-68c6-48c8-a343-b82b854eaa25 | The attribute Remarks are not filled. |
9 | Create User URL: http://localhost:8080/api/users?access_token=f77791e5-5cb7-4787-92f9-b55b6d971791 Method: POST Body: { "username": "UserName12", "email": "abc@gmail.com", "firstName": "Name2F", "lastName": "Last2N", "verified": "true", "active": "true", "restrictLogin": "false", "timezone":"CTM" } | id: d8c1a779-53ca-435e-a86c-a7a786fe50b6 | |
10 | Create supervisoryNode URL: http://localhost:8080/api/supervisoryNodes/?access_token=a2bb6f21-56aa-43e2-a9c5-940cb54d887a Method: POST Example body: { "code": "supervisoryNodeTest", "facility": { "id": "fb9ce60f-6557-4651-b9b9-efefccf76251", "code": "facilitycode", "name": "facilityname", "geographicZone": { "id": "3141d995-1f69-4400-be30-64ed564a0253", "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } }, "type": { "id": "d734497f-7e46-4915-9f05-83c0432fc158", "code": "typecode", "name": "typename" }, "active": true, "enabled": true } } | id: 5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8 | |
11 | Create requisition: In URL: http://localhost:8080/api/requisitions/?access_token=5a7d37fa-c57c-4c8e-8c3f-6d40021b01aa Method: Post Example Body { "id": "abd802e5-c181-453e-9b9a-087eedfb68b9", "requisitionLines": [ { "id": "4da79bc3-4188-4770-bace-991761dfb869", "product": { "id": "1752b457-0a4b-4de0-bf94-5a6a8002427e", "code": "productCode", "primaryName": "productName", "dispensingUnit": 1, "dosesPerDispensingUnit": 1, "packSize": 1, "packRoundingThreshold": 1, "roundToZero": true, "active": true, "fullSupply": true, "tracer": true, "productCategory": { "id": "3c840e6c-a2e6-482f-b794-90379fcbfe00", "code": "categorycode", "name": "categoryname", "displayOrder": 32 } }, "stockInHand": 2, "beginningBalance": 2, "totalReceivedQuantity": 2, "totalLossesAndAdjustments": 2, "stockOnHand": 2, "requestedQuantity": 2, "totalConsumedQuantity": 2, "requestedQuantityExplanation": "abc", "remarks": "sometest", "approvedQuantity": 2 } ], "facility": { "id": "fb9ce60f-6557-4651-b9b9-efefccf76251", "code": "facilitycode", "name": "facilityname", "geographicZone": { "id": "3141d995-1f69-4400-be30-64ed564a0253", "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } }, "type": { "id": "d734497f-7e46-4915-9f05-83c0432fc158", "code": "typecode", "name": "typename" }, "active": true, "enabled": true }, "program": { "id": "bebd5da3-b905-45b7-a474-85c3ba655f9d", "code": "programcode", "name": "programname", "periodsSkippable": true }, "processingPeriod": { "id": "f9378770-e1f9-4dbc-85b2-482ce55cb776", "processingSchedule": { "id": "79650728-fb5e-4413-ba1e-c58e042415f9", "code": "schedulecode", "name": "schedulename" }, "name": "periodname", "description": "abc", "startDate": "2016-09-15", "endDate": "2016-09-15" }, "status": "INITIATED", "supervisoryNode": { "id": " 5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8", "code": "supervisoryNodeTest", "facility": { "id": "fb9ce60f-6557-4651-b9b9-efefccf76251", "code": "facilitycode", "name": "facilityname", "geographicZone": { "id": "3141d995-1f69-4400-be30-64ed564a0253", "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } }, "type": { "id": "d734497f-7e46-4915-9f05-83c0432fc158", "code": "typecode", "name": "typename" } } } } | Status 201 Created, id: f13a2c6f-8791-4329-b468-11634e0cedf1 | Created requisition contain the entites created above. |
12 | Submit the previously created requisition. Method: PUT Body: the body of previously created requisition | ||
13 | Verify if the requisition is submitted. Method: GET OR URL: http://localhost:8080/api/requisitions/submitted?access_token=a5c523c7-914e-4d12-8a55-78db5f2f57b6 Method: GET | ||
14 | Create special User with previously created supervisoryNode. Method: POST Example body: { "id": "35316636-6264-6331-2d34-3933322d3462", "username": "trusted-client", "password": "secret", "email": "testowysoldevelo@gmail.com", "firstName": "Name2F", "lastName": "Last2N", "verified": "true", "active": "true", "restrictLogin": "false", "timezone":"CTM", "supervisedNode": { "id": "5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8", "code": "supervisoryNodeTest", "facility": { "id": "fb9ce60f-6557-4651-b9b9-efefccf76251", "code": "facilitycode", "name": "facilityname", "geographicZone": { "id": "3141d995-1f69-4400-be30-64ed564a0253", "code": "geocode", "name": "geoname", "level": { "id": "a8db3899-896f-4e40-b912-f38a6af5b3ce", "code": "levelcode", "name": "levelname", "levelNumber": "32" } }, "type": { "id": "d734497f-7e46-4915-9f05-83c0432fc158", "code": "typecode", "name": "typename" }, "active": true, "enabled": true } } } | "id": "35316636-6264-6331-2d34-3933322d3462" | |
15 | Authorize the first requisition. Body: the body of previously created requisition Method: PUT | ||
16 | Verify if the previously authorized requisition is waiting for the approval. Method: GET | Only the requisition with AUTHORIZED status, supervisoryNode associated with special User will be seen. The requisitions created in points 17 and 18 will not be visible on the approval lists. The User with proper role is not associated with supervisoryNode. | |
17 | Create second requisition with different supervisoryNode. | The whole process of creation the second requisition is the same like for the first requisition. (follow the steps from 1 to 15 but do not repeat the step from point 14.) | |
18 | Create third requisition without supervisoryNode. | The whole process of creation the second requisition is the same like for the first requisition. (follow the steps from 1 to 15 but do not repeat the step described in points 10 and 14.) | |
19 | Approve the first requisition. Method: PUT Body: the body of previously created requisition | ||
20 | Add comments to the first requisition. Example body: { "body": "some information" } | Status 201 Created, id: 7cba6c5d-ffcf-404a-a2b5-61e03f9d0998 | Comments are added to the first requisition when it has APPROVED status. |
21 | Verify if the comments are inserted (to the first requisition). URL: Method: GET | ||
22 | Change the Approved Quantity attribute. URL: http://localhost:8080/api/requisitionLines?access_token=a5c523c7-914e-4d12-8a55-78db5f2f57b6 Method: POST { "id": "fc93a929-d62e-4fff-9f8f-4ad9df0a4e60", "product": { "id": "1752b457-0a4b-4de0-bf94-5a6a8002427e", "code": "productCode", "primaryName": "productName", "dispensingUnit": "1", "dosesPerDispensingUnit": 1, "packSize": 1, "packRoundingThreshold": 1, "roundToZero": true, "active": true, "fullSupply": true, "tracer": true, "productCategory": { "id": "3c840e6c-a2e6-482f-b794-90379fcbfe00", "code": "categorycode", "name": "categoryname", "displayOrder": 32 } }, "requisition": null, "stockInHand": 2, "beginningBalance": 2, "totalReceivedQuantity": 2, "totalLossesAndAdjustments": 2, "stockOnHand": 2, "requestedQuantity": 2, "totalConsumedQuantity": 2, "requestedQuantityExplanation": "abc", "remarks": "sometest", "approvedQuantity": "125" } | Status 200 OK | Earlier, the approved quantity attribute was equals to 2. |
23 | Insert text into Remarks attribute. URL: http://localhost:8080/api/requisitionLines?access_token=a5c523c7-914e-4d12-8a55-78db5f2f57b6 Method; POST Body: { "id": "fc93a929-d62e-4fff-9f8f-4ad9df0a4e60", "product": { "id": "1752b457-0a4b-4de0-bf94-5a6a8002427e", "code": "productCode", "primaryName": "productName", "dispensingUnit": "1", "dosesPerDispensingUnit": 1, "packSize": 1, "packRoundingThreshold": 1, "roundToZero": true, "active": true, "fullSupply": true, "tracer": true, "productCategory": { "id": "3c840e6c-a2e6-482f-b794-90379fcbfe00", "code": "categorycode", "name": "categoryname", "displayOrder": 32 } }, "requisition": null, "stockInHand": 2, "beginningBalance": 2, "totalReceivedQuantity": 2, "totalLossesAndAdjustments": 2, "stockOnHand": 2, "requestedQuantity": 2, "totalConsumedQuantity": 2, "requestedQuantityExplanation": "abc", "remarks": "some test information are inserted", "approvedQuantity": "125" } | Status 200 OK | I cannot insert into Remarks attribute the text larger than 250 charts. When i try to do that, the 400 bad request status will be returned. |
OpenLMIS: the global initiative for powerful LMIS software