Skip to content

Commit f79a618

Browse files
committed
wip: update scheme, work order and operation routers in accordance with API changes
1 parent a2dd36a commit f79a618

File tree

18 files changed

+268
-170
lines changed

18 files changed

+268
-170
lines changed
Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
package com.ctrlhub.core.governance.schemes.workorders.operations
1+
package com.ctrlhub.core.governance.operations
22

33
import com.ctrlhub.core.Api
44
import com.ctrlhub.core.api.response.PaginatedList
5-
import com.ctrlhub.core.governance.schemes.workorders.WorkOrdersRouter
6-
import com.ctrlhub.core.governance.schemes.workorders.operations.response.Operation
5+
import com.ctrlhub.core.governance.workorders.WorkOrdersRouter
6+
import com.ctrlhub.core.governance.operations.response.Operation
77
import com.ctrlhub.core.iam.response.User
88
import com.ctrlhub.core.router.Router
9+
import com.ctrlhub.core.router.request.AbstractRequestParameters
10+
import com.ctrlhub.core.router.request.FilterOption
11+
import com.ctrlhub.core.router.request.RequestParameters
912
import io.ktor.client.HttpClient
1013

1114
class OperationsRouter(httpClient: HttpClient) : Router(httpClient) {
@@ -14,13 +17,11 @@ class OperationsRouter(httpClient: HttpClient) : Router(httpClient) {
1417
* Retrieve a list of all operations
1518
*
1619
* @param organisationId String The organisation ID to retrieve all operations for
17-
* @param schemeId String The scheme ID to retrieve all operations for
18-
* @param workOrderId String The work order ID to retreive all operations for
1920
*
2021
* @return A list of all operations
2122
*/
22-
suspend fun all(organisationId: String, schemeId: String, workOrderId: String): PaginatedList<Operation> {
23-
val endpoint = "/v3/orgs/$organisationId/governance/schemes/$schemeId/work-orders/$workOrderId/operations"
23+
suspend fun all(organisationId: String, requestParameters: RequestParameters = RequestParameters()): PaginatedList<Operation> {
24+
val endpoint = "/v3/orgs/$organisationId/projects/operations"
2425

2526
return fetchPaginatedJsonApiResources(endpoint, emptyMap(), Operation::class.java, User::class.java)
2627
}
@@ -29,14 +30,12 @@ class OperationsRouter(httpClient: HttpClient) : Router(httpClient) {
2930
* Retrieve a single operation
3031
*
3132
* @param organisationId String The organisation ID to retrieve all operations for
32-
* @param schemeId String The scheme ID to retrieve all operations for
33-
* @param workOrderId String The work order ID to retrieve all operations for
3433
* @param operationId String The operation ID to retrieve data for
3534
*
3635
* @return A list of all operations
3736
*/
38-
suspend fun one(organisationId: String, schemeId: String, workOrderId: String, operationId: String): Operation {
39-
val endpoint = "/v3/orgs/$organisationId/governance/schemes/$schemeId/work-orders/$workOrderId/operations/$operationId"
37+
suspend fun one(organisationId: String, operationId: String): Operation {
38+
val endpoint = "/v3/orgs/$organisationId/projects/operations/$operationId"
4039

4140
return fetchJsonApiResource(endpoint, emptyMap(), Operation::class.java, User::class.java)
4241
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ctrlhub.core.governance.schemes.workorders.operations.response
1+
package com.ctrlhub.core.governance.operations.response
22

33
import com.ctrlhub.core.api.Assignable
44
import com.ctrlhub.core.governance.response.Label
@@ -10,6 +10,7 @@ import com.github.jasminb.jsonapi.annotations.Id
1010
import com.github.jasminb.jsonapi.annotations.Relationship
1111
import com.github.jasminb.jsonapi.annotations.Type
1212
import java.time.LocalDate
13+
import java.time.LocalDateTime
1314

1415
@Type("operations")
1516
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -19,13 +20,7 @@ class Operation @JsonCreator constructor(
1920
@JsonProperty("code") var code: String = "",
2021
@JsonProperty("description") var description: String? = "",
2122
@JsonProperty("type") var type: String? = null,
22-
@JsonProperty("start_date") var startDate: LocalDate? = null,
23-
@JsonProperty("end_date") var endDate: LocalDate? = null,
24-
@JsonProperty("uprns") var uprns: List<String>? = emptyList(),
25-
@JsonProperty("usrns") var usrns: List<String>? = emptyList(),
26-
@JsonProperty("completed") var completed: Boolean = false,
27-
@JsonProperty("aborted") var aborted: Boolean = false,
28-
@JsonProperty("cancelled") var cancelled: Boolean = false,
23+
@JsonProperty("scheduled") var scheduledDates: OperationScheduledDates? = null,
2924

3025
@JsonProperty("labels")
3126
var labels: List<Label> = emptyList(),
@@ -38,13 +33,12 @@ class Operation @JsonCreator constructor(
3833
code = "",
3934
description = "",
4035
type = null,
41-
startDate = null,
42-
endDate = null,
43-
uprns = emptyList(),
44-
usrns = emptyList(),
45-
completed = false,
46-
aborted = false,
47-
cancelled = false,
36+
scheduledDates = null,
4837
labels = emptyList()
4938
)
50-
}
39+
}
40+
41+
data class OperationScheduledDates(
42+
val start: LocalDateTime? = null,
43+
var end: LocalDateTime? = null,
44+
)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.ctrlhub.core.governance.schemes.workorders.operations.templates
1+
package com.ctrlhub.core.governance.operations.templates
22

33
import com.ctrlhub.core.Api
44
import com.ctrlhub.core.api.response.PaginatedList
5-
import com.ctrlhub.core.governance.schemes.workorders.operations.OperationsRouter
6-
import com.ctrlhub.core.governance.schemes.workorders.operations.templates.response.OperationTemplate
5+
import com.ctrlhub.core.governance.operations.OperationsRouter
6+
import com.ctrlhub.core.governance.operations.templates.response.OperationTemplate
77
import com.ctrlhub.core.router.Router
88
import com.ctrlhub.core.router.request.RequestParameters
99
import io.ktor.client.HttpClient
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ctrlhub.core.governance.schemes.workorders.operations.templates.response
1+
package com.ctrlhub.core.governance.operations.templates.response
22

33
import com.ctrlhub.core.governance.response.Label
44
import com.fasterxml.jackson.annotation.JsonCreator

src/main/kotlin/com/ctrlhub/core/governance/schemes/SchemesRouter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.ctrlhub.core.governance.schemes
33
import com.ctrlhub.core.Api
44
import com.ctrlhub.core.api.response.PaginatedList
55
import com.ctrlhub.core.governance.schemes.response.Scheme
6-
import com.ctrlhub.core.governance.schemes.workorders.response.WorkOrder
6+
import com.ctrlhub.core.governance.workorders.response.WorkOrder
77
import com.ctrlhub.core.iam.response.User
88
import com.ctrlhub.core.router.Router
99
import com.ctrlhub.core.router.request.FilterOption

src/main/kotlin/com/ctrlhub/core/governance/schemes/response/Scheme.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.ctrlhub.core.governance.schemes.response
22

33
import com.ctrlhub.core.governance.response.Label
4-
import com.ctrlhub.core.governance.schemes.workorders.response.WorkOrder
4+
import com.ctrlhub.core.governance.workorders.response.WorkOrder
55
import com.fasterxml.jackson.annotation.JsonCreator
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
77
import com.fasterxml.jackson.annotation.JsonProperty

src/main/kotlin/com/ctrlhub/core/governance/schemes/workorders/WorkOrdersRouter.kt renamed to src/main/kotlin/com/ctrlhub/core/governance/workorders/WorkOrdersRouter.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.ctrlhub.core.governance.schemes.workorders
1+
package com.ctrlhub.core.governance.workorders
22

33
import com.ctrlhub.core.Api
44
import com.ctrlhub.core.api.response.PaginatedList
55
import com.ctrlhub.core.governance.schemes.SchemesRouter
6-
import com.ctrlhub.core.governance.schemes.workorders.response.WorkOrder
6+
import com.ctrlhub.core.governance.workorders.response.WorkOrder
77
import com.ctrlhub.core.router.Router
88
import io.ktor.client.HttpClient
99

@@ -13,25 +13,23 @@ class WorkOrdersRouter(httpClient: HttpClient) : Router(httpClient) {
1313
* Retrieve a list of all schemes
1414
*
1515
* @param organisationId String The organisation ID to retrieve all schemes for
16-
* @param schemeId String The scheme ID to fetch all work orders for
1716
*
1817
* @return A list of all work orders
1918
*/
20-
suspend fun all(organisationId: String, schemeId: String): PaginatedList<WorkOrder> {
21-
return fetchPaginatedJsonApiResources("/v3/orgs/$organisationId/governance/schemes/$schemeId/work-orders")
19+
suspend fun all(organisationId: String): PaginatedList<WorkOrder> {
20+
return fetchPaginatedJsonApiResources("/v3/orgs/$organisationId/projects/work-orders")
2221
}
2322

2423
/**
2524
* Fetch a single work order by ID
2625
*
2726
* @param organisationId String The organisation ID to retrieve a single work order for
28-
* @param schemeId String The scheme ID to retrieve a single work order for
2927
* @param workOrderId String The work order ID to retrieve data for
3028
*
3129
* @return WorkOrder
3230
*/
33-
suspend fun one(organisationId: String, schemeId: String, workOrderId: String): WorkOrder {
34-
return fetchJsonApiResource("/v3/orgs/$organisationId/governance/schemes/$schemeId/work-orders/$workOrderId")
31+
suspend fun one(organisationId: String, workOrderId: String): WorkOrder {
32+
return fetchJsonApiResource("/v3/orgs/$organisationId/projects/work-orders/$workOrderId")
3533
}
3634
}
3735

src/main/kotlin/com/ctrlhub/core/governance/schemes/workorders/response/WorkOrder.kt renamed to src/main/kotlin/com/ctrlhub/core/governance/workorders/response/WorkOrder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.ctrlhub.core.governance.schemes.workorders.response
1+
package com.ctrlhub.core.governance.workorders.response
22

33
import com.ctrlhub.core.governance.response.Label
4-
import com.ctrlhub.core.governance.schemes.workorders.operations.response.Operation
4+
import com.ctrlhub.core.governance.operations.response.Operation
55
import com.fasterxml.jackson.annotation.JsonCreator
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
77
import com.fasterxml.jackson.annotation.JsonProperty

src/test/kotlin/com/ctrlhub/core/governance/schemes/workorders/WorkOrdersRouterTest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.ctrlhub.core.governance.schemes.workorders
22

33
import com.ctrlhub.core.api.response.PaginatedList
4-
import com.ctrlhub.core.governance.schemes.workorders.response.WorkOrder
4+
import com.ctrlhub.core.governance.workorders.response.WorkOrder
55
import com.ctrlhub.core.configureForTest
6+
import com.ctrlhub.core.governance.workorders.WorkOrdersRouter
67
import io.ktor.client.HttpClient
78
import io.ktor.client.engine.mock.MockEngine
89
import io.ktor.client.engine.mock.respond
@@ -20,7 +21,7 @@ class WorkOrdersRouterTest {
2021

2122
@Test
2223
fun `can retrieve all work orders for a scheme`() {
23-
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/workorders/all-work-orders-response.json")
24+
val jsonFilePath = Paths.get("src/test/resources/governance/workorders/all-work-orders-response.json")
2425
val jsonContent = Files.readString(jsonFilePath)
2526

2627
val mockEngine = MockEngine { request ->
@@ -34,7 +35,7 @@ class WorkOrdersRouterTest {
3435
val workOrdersRouter = WorkOrdersRouter(httpClient = HttpClient(mockEngine).configureForTest())
3536

3637
runBlocking {
37-
val response = workOrdersRouter.all(organisationId = "abc123", schemeId = "e3fbd3a4-4c96-4b97-8033-8a1a3b4c2e4c")
38+
val response = workOrdersRouter.all(organisationId = "abc123")
3839

3940
assertIs<PaginatedList<WorkOrder>>(response)
4041
assertNotNull(response.data[0].id)
@@ -43,7 +44,7 @@ class WorkOrdersRouterTest {
4344

4445
@Test
4546
fun `can retrieve a single work order by ID`() {
46-
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/workorders/one-work-order-response.json")
47+
val jsonFilePath = Paths.get("src/test/resources/governance/workorders/one-work-order-response.json")
4748
val jsonContent = Files.readString(jsonFilePath)
4849

4950
val mockEngine = MockEngine { request ->
@@ -59,7 +60,6 @@ class WorkOrdersRouterTest {
5960
runBlocking {
6061
val response = workOrdersRouter.one(
6162
organisationId = "abc123",
62-
schemeId = "e3fbd3a4-4c96-4b97-8033-8a1a3b4c2e4c",
6363
workOrderId = "b2d9c34f-57c4-4b93-8ef6-6342de1e1c3d"
6464
)
6565

src/test/kotlin/com/ctrlhub/core/governance/schemes/workorders/operations/OperationsRouterTest.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package com.ctrlhub.core.governance.schemes.workorders.operations
22

33
import com.ctrlhub.core.api.response.PaginatedList
44
import com.ctrlhub.core.configureForTest
5-
import com.ctrlhub.core.governance.schemes.workorders.operations.response.Operation
5+
import com.ctrlhub.core.governance.operations.OperationsRouter
6+
import com.ctrlhub.core.governance.operations.response.Operation
67
import io.ktor.client.*
78
import io.ktor.client.engine.mock.*
89
import io.ktor.http.*
@@ -16,7 +17,7 @@ import kotlin.test.assertNotNull
1617
class OperationsRouterTest {
1718
@Test
1819
fun `can retrieve all operations for work order`() {
19-
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/workorders/operations/all-operations-response.json")
20+
val jsonFilePath = Paths.get("src/test/resources/governance/operations/all-operations-response.json")
2021
val jsonContent = Files.readString(jsonFilePath)
2122

2223
val mockEngine = MockEngine { request ->
@@ -32,8 +33,6 @@ class OperationsRouterTest {
3233
runBlocking {
3334
val response = operationsRouter.all(
3435
organisationId = "123",
35-
schemeId = "abc",
36-
workOrderId = "def"
3736
)
3837

3938
assertIs<PaginatedList<Operation>>(response)
@@ -43,7 +42,7 @@ class OperationsRouterTest {
4342

4443
@Test
4544
fun `can retrieve a single operation`() {
46-
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/workorders/operations/one-operation-response.json")
45+
val jsonFilePath = Paths.get("src/test/resources/governance/operations/one-operation-response.json")
4746
val jsonContent = Files.readString(jsonFilePath)
4847

4948
val mockEngine = MockEngine { request ->
@@ -59,8 +58,6 @@ class OperationsRouterTest {
5958
runBlocking {
6059
val response = operationsRouter.one(
6160
organisationId = "123",
62-
schemeId = "abc",
63-
workOrderId = "def",
6461
operationId = "ghi"
6562
)
6663

0 commit comments

Comments
 (0)