diff --git a/README.md b/README.md index b4c2824..53ce4f2 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Novu's API exposes the entire Novu features via a standardized programmatic inte * [Integrations](#integrations) * [Notifications](#notification) * [Workflow](#workflow) + * [Workflow Override](#workflow-override) * [Workflow Groups](#workflow-groups) * [Changes](#changes) * [Environments](#environments) @@ -428,6 +429,16 @@ public class Main { - `Workflow(WorkflowId)` - `updateWorkflowStatus(WorkflowId, body)` +### Workflow Override + +- `createWorkflowOverride(createWorkflowOverrideRequest)` +- `getWorkflowOverrides(getWorkflowOverrideRequest)` +- `getWorkflowOverride(workflowId, tenantId)` +- `getWorkflowOverrideById(overrideId)` +- `updateWorkflowOverride(workflowId, tenantId)` +- `updateWorkflowOverrideById(overrideId)` +- `deleteWorkflow(overrideId)` + ### Notification - `notifications(query = {})` diff --git a/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideApi.java b/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideApi.java new file mode 100644 index 0000000..2c64438 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideApi.java @@ -0,0 +1,50 @@ +package co.novu.api.workflowoverrides; + +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; + +import co.novu.api.workflowoverrides.request.CreateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.UpdateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.response.BulkWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.DeleteWorkflowOverrideResponse; +import co.novu.api.workflowoverrides.response.GetWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.WorkflowOverrideResponse; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.DELETE; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Path; +import retrofit2.http.QueryMap; + +import java.util.Map; + +public interface WorkflowOverrideApi { + + String ENDPOINT = "workflow-overrides"; + + @POST(ENDPOINT) + Call createWorkflowOverride(@Body CreateWorkflowOverrideRequest request); + + @GET(ENDPOINT) + Call getWorkflowOverrides(@QueryMap Map params); + + @GET(ENDPOINT + "/workflows/{workflowId}/tenants/{tenantId}") + Call getWorkflowOverride(@Path("workflowId") String workflowId, @Path("tenantId") String tenantId); + + + @GET(ENDPOINT + "/{overrideId}") + Call getWorkflowOverrideById(@Path("overrideId") String overrideId); + + + @PUT(ENDPOINT + "/{overrideId}") + Call updateWorkflowOverrideById(@Path("overrideId") String OverrideId, @Body UpdateWorkflowOverrideRequest request); + + + @PUT(ENDPOINT + "/workflows/{workflowId}/tenants/{tenantId}") + Call updateWorkflowOverride(@Path("workflowId") String workflowId, @Path("tenantId") String tenantId, + @Body UpdateWorkflowOverrideRequest request); + + @DELETE(ENDPOINT + "/{overrideId}") + Call deleteWorkflowOverride(@Path("overrideId") String overrideId); +} diff --git a/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideHandler.java b/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideHandler.java new file mode 100644 index 0000000..56c51be --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/WorkflowOverrideHandler.java @@ -0,0 +1,69 @@ +package co.novu.api.workflowoverrides; + +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; +import co.novu.api.workflowoverrides.request.CreateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.GetWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.UpdateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.response.BulkWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.DeleteWorkflowOverrideResponse; +import co.novu.api.workflowoverrides.response.GetWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.WorkflowOverrideResponse; +import co.novu.common.rest.NovuNetworkException; +import co.novu.common.rest.RestHandler; +import retrofit2.Response; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class WorkflowOverrideHandler { + + private final RestHandler restHandler; + + private final WorkflowOverrideApi workflowOverrideApi; + + public WorkflowOverrideHandler(RestHandler restHandler) { + this.restHandler = restHandler; + this.workflowOverrideApi = restHandler.buildRetrofit().create(WorkflowOverrideApi.class); + } + + public WorkflowOverrideResponse createWorkflowOverride(CreateWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + Response response = workflowOverrideApi.createWorkflowOverride(request).execute(); + return restHandler.extractResponse(response); + } + + public GetWorkflowOverridesResponse getWorkflowOverrides(GetWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + Map params = new HashMap<>(); + if (request.getPage() != null) params.put("page", request.getPage()); + if (request.getLimit() != null) params.put("limit", request.getLimit()); + Response response = workflowOverrideApi.getWorkflowOverrides(params).execute(); + return restHandler.extractResponse(response); + } + + public WorkflowOverrideResponse getWorkflowOverride(String workflowId, String tenantId) throws IOException, NovuNetworkException { + Response response = workflowOverrideApi.getWorkflowOverride(workflowId, tenantId).execute(); + return restHandler.extractResponse(response); + } + + public WorkflowOverrideResponse getWorkflowOverrideById(String overrideId) throws IOException, NovuNetworkException { + Response response = workflowOverrideApi.getWorkflowOverrideById(overrideId).execute(); + return restHandler.extractResponse(response); + } + + public WorkflowOverrideResponse updateWorkflowOverrideById(String overrideId, UpdateWorkflowOverrideRequest request) throws IOException, + NovuNetworkException { + Response response = workflowOverrideApi.updateWorkflowOverrideById(overrideId, request).execute(); + return restHandler.extractResponse(response); + } + + public WorkflowOverrideResponse updateWorkflowOverride(String workflowId, String tenantId, UpdateWorkflowOverrideRequest request) + throws IOException, NovuNetworkException { + Response response = workflowOverrideApi.updateWorkflowOverride(workflowId, tenantId, request).execute(); + return restHandler.extractResponse(response); + } + + public DeleteWorkflowOverrideResponse deleteWorkflowOverride(String overrideId) throws IOException, NovuNetworkException { + Response response = workflowOverrideApi.deleteWorkflowOverride(overrideId).execute(); + return restHandler.extractResponse(response); + } +} diff --git a/src/main/java/co/novu/api/workflowoverrides/pojos/WorkflowOverride.java b/src/main/java/co/novu/api/workflowoverrides/pojos/WorkflowOverride.java new file mode 100644 index 0000000..0b5efbf --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/pojos/WorkflowOverride.java @@ -0,0 +1,35 @@ +package co.novu.api.workflowoverrides.pojos; + +import co.novu.api.common.PreferenceSettings; + +import com.google.gson.annotations.SerializedName; + +import lombok.Data; + +@Data +public class WorkflowOverride { + + @SerializedName("_id") + private String id; + + @SerializedName("_organizationId") + private String organizationId; + + @SerializedName("_environmentId") + private String environmentId; + + @SerializedName("_workflowId") + private String workflowId; + + @SerializedName("_tenantId") + private String tenantId; + + private Boolean active; + private PreferenceSettings preferenceSettings; + private Boolean deleted; + private String deletedAt; + private String deletedBy; + private String createdAt; + private String updatedAt; + +} diff --git a/src/main/java/co/novu/api/workflowoverrides/request/CreateWorkflowOverrideRequest.java b/src/main/java/co/novu/api/workflowoverrides/request/CreateWorkflowOverrideRequest.java new file mode 100644 index 0000000..bb912b1 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/request/CreateWorkflowOverrideRequest.java @@ -0,0 +1,14 @@ +package co.novu.api.workflowoverrides.request; + +import co.novu.api.common.PreferenceSettings; +import co.novu.common.contracts.IRequest; + +import lombok.Data; + +@Data +public class CreateWorkflowOverrideRequest implements IRequest { + private PreferenceSettings preferenceSettings; + private Boolean active; + private String tenantId; + private String workflowId; +} diff --git a/src/main/java/co/novu/api/workflowoverrides/request/GetWorkflowOverrideRequest.java b/src/main/java/co/novu/api/workflowoverrides/request/GetWorkflowOverrideRequest.java new file mode 100644 index 0000000..2887dbc --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/request/GetWorkflowOverrideRequest.java @@ -0,0 +1,11 @@ +package co.novu.api.workflowoverrides.request; + +import co.novu.common.contracts.IRequest; + +import lombok.Data; + +@Data +public class GetWorkflowOverrideRequest implements IRequest { + private Integer page; + private Integer limit; +} diff --git a/src/main/java/co/novu/api/workflowoverrides/request/UpdateWorkflowOverrideRequest.java b/src/main/java/co/novu/api/workflowoverrides/request/UpdateWorkflowOverrideRequest.java new file mode 100644 index 0000000..e5ddde1 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/request/UpdateWorkflowOverrideRequest.java @@ -0,0 +1,11 @@ +package co.novu.api.workflowoverrides.request; + +import co.novu.api.common.PreferenceSettings; + +import lombok.Data; + +@Data +public class UpdateWorkflowOverrideRequest { + private Boolean active; + private PreferenceSettings data; +} diff --git a/src/main/java/co/novu/api/workflowoverrides/response/BulkWorkflowOverridesResponse.java b/src/main/java/co/novu/api/workflowoverrides/response/BulkWorkflowOverridesResponse.java new file mode 100644 index 0000000..5e2c710 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/response/BulkWorkflowOverridesResponse.java @@ -0,0 +1,17 @@ +package co.novu.api.workflowoverrides.response; + +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; + +import java.util.List; + +import lombok.Data; + +@Data +public class BulkWorkflowOverridesResponse { + private List data; + private Boolean hasMore; + private Long page; + private Long pageSize; +} + + diff --git a/src/main/java/co/novu/api/workflowoverrides/response/DeleteWorkflowOverrideResponse.java b/src/main/java/co/novu/api/workflowoverrides/response/DeleteWorkflowOverrideResponse.java new file mode 100644 index 0000000..20e2d6e --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/response/DeleteWorkflowOverrideResponse.java @@ -0,0 +1,8 @@ +package co.novu.api.workflowoverrides.response; + +import lombok.Data; + +@Data +public class DeleteWorkflowOverrideResponse { + private Boolean data; +} diff --git a/src/main/java/co/novu/api/workflowoverrides/response/GetWorkflowOverridesResponse.java b/src/main/java/co/novu/api/workflowoverrides/response/GetWorkflowOverridesResponse.java new file mode 100644 index 0000000..8dd4d05 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/response/GetWorkflowOverridesResponse.java @@ -0,0 +1,8 @@ +package co.novu.api.workflowoverrides.response; + +import lombok.Data; + +@Data +public class GetWorkflowOverridesResponse { + private BulkWorkflowOverridesResponse data; +} diff --git a/src/main/java/co/novu/api/workflowoverrides/response/WorkflowOverrideResponse.java b/src/main/java/co/novu/api/workflowoverrides/response/WorkflowOverrideResponse.java new file mode 100644 index 0000000..81bd2a6 --- /dev/null +++ b/src/main/java/co/novu/api/workflowoverrides/response/WorkflowOverrideResponse.java @@ -0,0 +1,10 @@ +package co.novu.api.workflowoverrides.response; + +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; + +import lombok.Data; + +@Data +public class WorkflowOverrideResponse { + private WorkflowOverride data; +} diff --git a/src/main/java/co/novu/common/base/Novu.java b/src/main/java/co/novu/common/base/Novu.java index b0b3601..af13ec9 100644 --- a/src/main/java/co/novu/common/base/Novu.java +++ b/src/main/java/co/novu/common/base/Novu.java @@ -107,6 +107,15 @@ import co.novu.api.workflowgroups.responses.DeleteWorkflowGroup; import co.novu.api.workflowgroups.responses.GetWorkflowGroupsResponse; import co.novu.api.workflowgroups.responses.WorkflowGroupResponse; +import co.novu.api.workflowoverrides.WorkflowOverrideHandler; +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; +import co.novu.api.workflowoverrides.request.CreateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.GetWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.UpdateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.response.BulkWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.DeleteWorkflowOverrideResponse; +import co.novu.api.workflowoverrides.response.GetWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.WorkflowOverrideResponse; import co.novu.api.workflows.WorkflowHandler; import co.novu.api.workflows.requests.UpdateWorkflowRequest; import co.novu.api.workflows.requests.UpdateWorkflowStatusRequest; @@ -116,6 +125,7 @@ import co.novu.api.workflows.responses.SingleWorkflowResponse; import co.novu.common.rest.NovuNetworkException; import co.novu.common.rest.RestHandler; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -155,6 +165,8 @@ public class Novu { private final OrganizationHandler organizationHandler; + private final WorkflowOverrideHandler workflowOverrideHandler; + public Novu(String apiKey) { this(new NovuConfig(apiKey)); @@ -179,6 +191,7 @@ public Novu(NovuConfig novuConfig) { this.blueprintsHandler = new BlueprintsHandler(restHandler); this.tenantsHandler = new TenantsHandler(restHandler); this.organizationHandler = new OrganizationHandler(restHandler); + this.workflowOverrideHandler = new WorkflowOverrideHandler(restHandler); } public TriggerEventResponse triggerEvent(TriggerEventRequest request) throws IOException, NovuNetworkException { @@ -973,4 +986,67 @@ public UpdateOrganizationBrandResponse updateOrganizationBrand(UpdateOrganizatio throw e; } } + + public WorkflowOverrideResponse createWorkflowOverride(CreateWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.createWorkflowOverride(request); + } catch (Exception e) { + log.error("Error creating Workflow-Override", e); + throw e; + } + } + + public GetWorkflowOverridesResponse getWorkflowOverrides(GetWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.getWorkflowOverrides(request); + } catch (Exception e) { + log.error("Error fetching Workflow-Override", e); + throw e; + } + } + + public WorkflowOverrideResponse getWorkflowOverride(String workflowId, String tenantId) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.getWorkflowOverride(workflowId, tenantId); + } catch (Exception e) { + log.error("Error fetching Workflow-Override", e); + throw e; + } + } + + public WorkflowOverrideResponse getWorkflowOverrideById(String overrideId) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.getWorkflowOverrideById(overrideId); + } catch (Exception e) { + log.error("Error fetching Workflow-Override", e); + throw e; + } + } + + public WorkflowOverrideResponse updateWorkflowOverrideById(String overrideId, UpdateWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.updateWorkflowOverrideById(overrideId, request); + } catch (Exception e) { + log.error("Error updating Workflow-Override", e); + throw e; + } + } + + public WorkflowOverrideResponse updateWorkflowOverride(String workflowId, String tenantId, UpdateWorkflowOverrideRequest request) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.updateWorkflowOverride(workflowId, tenantId, request); + } catch (Exception e) { + log.error("Error updating Workflow-Override", e); + throw e; + } + } + + public DeleteWorkflowOverrideResponse deleteWorkflowOverride(String overrideId) throws IOException, NovuNetworkException { + try { + return workflowOverrideHandler.deleteWorkflowOverride(overrideId); + } catch (Exception e) { + log.error("Error deleting Workflow-Override", e); + throw e; + } + } } diff --git a/src/test/java/co/novu/api/workflowoverride/WorkflowOverrideHandlerTest.java b/src/test/java/co/novu/api/workflowoverride/WorkflowOverrideHandlerTest.java new file mode 100644 index 0000000..54db60f --- /dev/null +++ b/src/test/java/co/novu/api/workflowoverride/WorkflowOverrideHandlerTest.java @@ -0,0 +1,187 @@ +package co.novu.api.workflowoverride; + +import co.novu.api.common.PreferenceSettings; +import co.novu.api.workflowoverrides.WorkflowOverrideHandler; +import co.novu.api.workflowoverrides.pojos.WorkflowOverride; +import co.novu.api.workflowoverrides.request.CreateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.GetWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.request.UpdateWorkflowOverrideRequest; +import co.novu.api.workflowoverrides.response.BulkWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.DeleteWorkflowOverrideResponse; +import co.novu.api.workflowoverrides.response.GetWorkflowOverridesResponse; +import co.novu.api.workflowoverrides.response.WorkflowOverrideResponse; +import co.novu.common.base.NovuConfig; +import co.novu.common.rest.NovuNetworkException; +import co.novu.common.rest.RestHandler; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; + +import java.io.IOException; +import java.util.List; + +import junit.framework.TestCase; + +import com.google.gson.Gson; + +public class WorkflowOverrideHandlerTest extends TestCase { + + private WorkflowOverrideHandler workflowOverrideHandler; + + private MockWebServer mockWebServer; + + @Override + protected void setUp() { + mockWebServer = new MockWebServer(); + NovuConfig novuConfig = new NovuConfig("1234"); + novuConfig.setBaseUrl(mockWebServer.url("").toString()); + RestHandler restHandler = new RestHandler(novuConfig); + workflowOverrideHandler = new WorkflowOverrideHandler(restHandler); + } + + public void test_createWorkflowOverrideHandler() throws IOException, NovuNetworkException, InterruptedException { + WorkflowOverrideResponse workflowOverrideResponse = getWorkflowOverrideResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(201).setBody(gson.toJson(workflowOverrideResponse))); + CreateWorkflowOverrideRequest createWorkflowOverrideRequest = getCreateWorkflowOverrideRequest(); + WorkflowOverrideResponse response = workflowOverrideHandler.createWorkflowOverride(createWorkflowOverrideRequest); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides", request.getPath()); + assertEquals("POST", request.getMethod()); + assertEquals(gson.toJson(workflowOverrideResponse), gson.toJson(response)); + } + + public void test_getWorkflowOverrides() throws IOException, NovuNetworkException, InterruptedException { + GetWorkflowOverridesResponse workflowOverridesResponse = getWorkflowOverridesResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(workflowOverridesResponse))); + GetWorkflowOverrideRequest getWorkflowOverrideRequest = new GetWorkflowOverrideRequest(); + getWorkflowOverrideRequest.setPage(1); + getWorkflowOverrideRequest.setLimit(10); + GetWorkflowOverridesResponse response = workflowOverrideHandler.getWorkflowOverrides(getWorkflowOverrideRequest); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides?limit=10&page=1", request.getPath()); + assertEquals("GET", request.getMethod()); + assertEquals(gson.toJson(workflowOverridesResponse), gson.toJson(response)); + } + + public void test_getWorkflowOverrideById() throws IOException, NovuNetworkException, InterruptedException { + WorkflowOverrideResponse workflowOverrideResponse = getWorkflowOverrideResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(workflowOverrideResponse))); + WorkflowOverrideResponse response = workflowOverrideHandler.getWorkflowOverrideById("8329rufivdsnvs9u334"); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides/8329rufivdsnvs9u334", request.getPath()); + assertEquals("GET", request.getMethod()); + assertEquals(gson.toJson(workflowOverrideResponse), gson.toJson(response)); + } + + public void test_getWorkflowOverride() throws IOException, NovuNetworkException, InterruptedException { + WorkflowOverrideResponse workflowOverrideResponse = getWorkflowOverrideResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(workflowOverrideResponse))); + WorkflowOverrideResponse response = workflowOverrideHandler.getWorkflowOverride("8329rufivdsnvs9u334", "wvnq340i2jfwqv392"); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides/workflows/8329rufivdsnvs9u334/tenants/wvnq340i2jfwqv392", request.getPath()); + assertEquals("GET", request.getMethod()); + assertEquals(gson.toJson(workflowOverrideResponse), gson.toJson(response)); + } + + public void test_updateWorkflowOverrideById() throws IOException, NovuNetworkException, InterruptedException { + WorkflowOverrideResponse workflowOverrideResponse = getWorkflowOverrideResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(workflowOverrideResponse))); + UpdateWorkflowOverrideRequest updateRequest = getUpdateWorkflowOverrideRequest(); + WorkflowOverrideResponse response = workflowOverrideHandler.updateWorkflowOverrideById("8329rufivdsnvs9u334", updateRequest); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides/8329rufivdsnvs9u334", request.getPath()); + assertEquals("PUT", request.getMethod()); + assertEquals(gson.toJson(workflowOverrideResponse), gson.toJson(response)); + } + + public void test_updateWorkflowOverride() throws IOException, NovuNetworkException, InterruptedException { + WorkflowOverrideResponse workflowOverrideResponse = getWorkflowOverrideResponse(); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(workflowOverrideResponse))); + UpdateWorkflowOverrideRequest updateRequest = getUpdateWorkflowOverrideRequest(); + WorkflowOverrideResponse response = workflowOverrideHandler.updateWorkflowOverride("8329rufivdsnvs9u334", "wvnq340i2jfwqv392", + updateRequest); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides/workflows/8329rufivdsnvs9u334/tenants/wvnq340i2jfwqv392", request.getPath()); + assertEquals("PUT", request.getMethod()); + assertEquals(gson.toJson(workflowOverrideResponse), gson.toJson(response)); + } + + public void test_deleteWorkflowOverride() throws IOException, NovuNetworkException, InterruptedException { + DeleteWorkflowOverrideResponse deleteResponse = new DeleteWorkflowOverrideResponse(); + deleteResponse.setData(true); + Gson gson = new Gson(); + mockWebServer.enqueue(new MockResponse().setResponseCode(200).setBody(gson.toJson(deleteResponse))); + DeleteWorkflowOverrideResponse response = workflowOverrideHandler.deleteWorkflowOverride("8329rufivdsnvs9u334"); + assertNotNull(response); + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("/workflow-overrides/8329rufivdsnvs9u334", request.getPath()); + assertEquals("DELETE", request.getMethod()); + assertEquals(gson.toJson(deleteResponse), gson.toJson(response)); + } + + private PreferenceSettings getPreferenceSettings() { + PreferenceSettings preferenceSettings = new PreferenceSettings(); + preferenceSettings.setChat(true); + preferenceSettings.setSms(true); + preferenceSettings.setPush(true); + preferenceSettings.setEmail(true); + preferenceSettings.setIn_app(true); + return preferenceSettings; + } + + private WorkflowOverrideResponse getWorkflowOverrideResponse() { + WorkflowOverrideResponse workflowOverrideResponse = new WorkflowOverrideResponse(); + workflowOverrideResponse.setData(getWorkflowOverride()); + return workflowOverrideResponse; + } + + private WorkflowOverride getWorkflowOverride() { + WorkflowOverride workflowOverride = new WorkflowOverride(); + workflowOverride.setId("_id"); + workflowOverride.setWorkflowId("workflowId(_id"); + workflowOverride.setEnvironmentId("environmentId_id"); + workflowOverride.setTenantId("tenantId_id"); + workflowOverride.setTenantId("tenantId_id"); + workflowOverride.setPreferenceSettings(getPreferenceSettings()); + return workflowOverride; + } + + private CreateWorkflowOverrideRequest getCreateWorkflowOverrideRequest() { + CreateWorkflowOverrideRequest createWorkflowOverrideRequest = new CreateWorkflowOverrideRequest(); + createWorkflowOverrideRequest.setPreferenceSettings(getPreferenceSettings()); + createWorkflowOverrideRequest.setActive(true); + createWorkflowOverrideRequest.setTenantId("8329rufivdsnvs9u334"); + createWorkflowOverrideRequest.setWorkflowId("wvnq340i2jfwqv392"); + return createWorkflowOverrideRequest; + } + + private GetWorkflowOverridesResponse getWorkflowOverridesResponse() { + BulkWorkflowOverridesResponse bulkWorkflowOverridesResponse = new BulkWorkflowOverridesResponse(); + bulkWorkflowOverridesResponse.setData(List.of(getWorkflowOverride(), getWorkflowOverride())); + bulkWorkflowOverridesResponse.setHasMore(true); + bulkWorkflowOverridesResponse.setPageSize(10L); + bulkWorkflowOverridesResponse.setPage(1L); + GetWorkflowOverridesResponse getWorkflowOverridesResponse = new GetWorkflowOverridesResponse(); + getWorkflowOverridesResponse.setData(bulkWorkflowOverridesResponse); + return getWorkflowOverridesResponse; + } + + private UpdateWorkflowOverrideRequest getUpdateWorkflowOverrideRequest() { + UpdateWorkflowOverrideRequest updateWorkflowOverrideRequest = new UpdateWorkflowOverrideRequest(); + updateWorkflowOverrideRequest.setActive(true); + updateWorkflowOverrideRequest.setData(getPreferenceSettings()); + return updateWorkflowOverrideRequest; + } + +}