diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/HubspotClientManager.java b/src/main/java/com/smartling/connector/hubspot/sdk/HubspotClientManager.java index 1bd51db..6c4d945 100644 --- a/src/main/java/com/smartling/connector/hubspot/sdk/HubspotClientManager.java +++ b/src/main/java/com/smartling/connector/hubspot/sdk/HubspotClientManager.java @@ -10,7 +10,6 @@ public interface HubspotClientManager HubspotPagesV3Client getPagesV3Client(PageType pageType); HubspotFormsClient getFormsClient(); HubspotBlogPostsClient getBlogPostsClient(); - HubspotEmailsClient getEmailsClient(); HubspotEmailsV3Client getEmailsV3Client(); HubspotBlogPostsEntityClient getBlogPostsEntityClient(); HubspotBlogTagsClient getBlogTagsClient(); diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/HubspotEmailsClient.java b/src/main/java/com/smartling/connector/hubspot/sdk/HubspotEmailsClient.java deleted file mode 100644 index dc2b497..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/HubspotEmailsClient.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.smartling.connector.hubspot.sdk; - -import com.smartling.connector.hubspot.sdk.common.ListWrapper; -import com.smartling.connector.hubspot.sdk.email.EmailDetail; -import lombok.NonNull; - -import java.util.Map; - -public interface HubspotEmailsClient extends HubspotClient -{ - ListWrapper listEmails(int offset, int limit, String orderBy, Map queryMap) throws HubspotApiException; - - EmailDetail getDetail(@NonNull String emailId) throws HubspotApiException; - - String getContent(@NonNull String emailId) throws HubspotApiException; - - String updateContent(@NonNull String emailId, @NonNull String emailContent) throws HubspotApiException; - - String updateAbContent(@NonNull String emailId, @NonNull String emailContent) throws HubspotApiException; - - EmailDetail clone(@NonNull String emailId, @NonNull String name) throws HubspotApiException; - - EmailDetail createVariation(@NonNull String emailId, @NonNull String variationName) throws HubspotApiException; - - EmailDetail getBufferedDetail(@NonNull String emailId) throws HubspotApiException; -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/CloneEmailRequest.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/CloneEmailRequest.java deleted file mode 100644 index 42ee54f..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/CloneEmailRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CloneEmailRequest -{ - private String name; -} \ No newline at end of file diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/CreateVariationRequest.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/CreateVariationRequest.java deleted file mode 100644 index 0a23141..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/CreateVariationRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CreateVariationRequest -{ - String variantName; -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailAbStatus.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailAbStatus.java deleted file mode 100644 index 53d8dc5..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailAbStatus.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -public enum EmailAbStatus -{ - master, - variant -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetail.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetail.java deleted file mode 100644 index 9ca88a5..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetail.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -@EqualsAndHashCode(callSuper=true) -@Data -@NoArgsConstructor -public class EmailDetail extends EmailDetailShort -{ - public static final String FIELDS = EmailDetailShort.FIELDS + - ",ab,abHoursToWait,abStatus,abSuccessMetric,abTestId,abTestPercentage,abVariation," + - "authorName,currentState,fromName,htmlTitle,language," + - "publishedByName,rssEmailByText,rssEmailClickThroughText,rssEmailCommentText,state,subject,subscriptionName"; - - private boolean ab; - private int abHoursToWait; - private EmailAbStatus abStatus; - private String abSuccessMetric; - private long abTestId; - private int abTestPercentage; - private boolean abVariation; - - private String authorName; - private EmailState currentState; - private String fromName; - private String htmlTitle; - private String language; - private String publishedByName; - private String rssEmailByText; - private String rssEmailClickThroughText; - private String rssEmailCommentText; - private EmailState state; - private String subject; - private String subscriptionName; - -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetailShort.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetailShort.java deleted file mode 100644 index 49bb58d..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailDetailShort.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; - -@Data -@NoArgsConstructor -public class EmailDetailShort -{ - public static final String FIELDS = "emailType,id,name,updated,created"; - private String emailType; - private String id; - private String name; - private Date updated; - private Date created; -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailState.java b/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailState.java deleted file mode 100644 index 4c8365c..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/email/EmailState.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.smartling.connector.hubspot.sdk.email; - -public enum EmailState -{ - // AB master states - DRAFT_AB, - PUBLISHED_AB, - SCHEDULED_AB, - - // AB variant states - DRAFT_AB_VARIANT, - PUBLISHED_AB_VARIANT, - SCHEDULED_AB_VARIANT, - - // Automated states - AUTOMATED_DRAFT, - AUTOMATED, - - // Batch states - DRAFT, - PUBLISHED, - SCHEDULED, - - // Follow up states - AUTOMATED_FOR_FORM_BUFFER, - AUTOMATED_FOR_FORM_DRAFT, - AUTOMATED_FOR_FORM, - AUTOMATED_FOR_FORM_LEGACY, - - // RSS states - RSS_TO_EMAIL_DRAFT, - RSS_TO_EMAIL_PUBLISHED, - - // Other states - PRE_PROCESSING, - PROCESSING, - ERROR -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestClientManager.java b/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestClientManager.java index 831b5ad..1fe200a 100644 --- a/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestClientManager.java +++ b/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestClientManager.java @@ -5,7 +5,6 @@ import com.smartling.connector.hubspot.sdk.HubspotBlogTagsClient; import com.smartling.connector.hubspot.sdk.HubspotClientManager; import com.smartling.connector.hubspot.sdk.HubspotDomainClient; -import com.smartling.connector.hubspot.sdk.HubspotEmailsClient; import com.smartling.connector.hubspot.sdk.HubspotFormsClient; import com.smartling.connector.hubspot.sdk.HubspotPagesClient; import com.smartling.connector.hubspot.sdk.rest.token.HubspotTokenProvider; @@ -52,12 +51,6 @@ public HubspotBlogPostsClient getBlogPostsClient() return new HubspotRestBlogPostsClient(configuration, tokenProvider); } - @Override - public HubspotEmailsClient getEmailsClient() - { - return new HubspotRestEmailsClient(configuration, tokenProvider); - } - @Override public HubspotEmailsV3Client getEmailsV3Client() { diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClient.java b/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClient.java deleted file mode 100644 index 00cd81a..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClient.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.smartling.connector.hubspot.sdk.rest; - -import com.smartling.connector.hubspot.sdk.HubspotApiException; -import com.smartling.connector.hubspot.sdk.HubspotEmailsClient; -import com.smartling.connector.hubspot.sdk.common.ListWrapper; -import com.smartling.connector.hubspot.sdk.email.CloneEmailRequest; -import com.smartling.connector.hubspot.sdk.email.CreateVariationRequest; -import com.smartling.connector.hubspot.sdk.email.EmailDetail; -import com.smartling.connector.hubspot.sdk.logger.FeignLogger; -import com.smartling.connector.hubspot.sdk.rest.api.EmailsEntityApi; -import com.smartling.connector.hubspot.sdk.rest.api.EmailsRawApi; -import com.smartling.connector.hubspot.sdk.rest.token.TokenProvider; -import feign.Feign; -import feign.Logger; -import feign.Request; -import feign.gson.GsonDecoder; -import feign.gson.GsonEncoder; -import lombok.NonNull; - -import java.util.Collections; -import java.util.Map; - -public class HubspotRestEmailsClient extends AbstractHubspotRestClient implements HubspotEmailsClient -{ - private final EmailsEntityApi emailsEntityApi; - private final EmailsRawApi emailsRawApi; - - public HubspotRestEmailsClient(final Configuration configuration, final TokenProvider tokenProvider) - { - super(tokenProvider); - - Request.Options connectionConfig = new Request.Options( - configuration.getConnectTimeoutMillis(), configuration.getReadTimeoutMillis()); - - emailsRawApi = Feign.builder() - .requestInterceptor(getAuthenticationInterceptor()) - .options(connectionConfig) - .logger(new FeignLogger(EmailsRawApi.class)) - .logLevel(Logger.Level.FULL) - .target(EmailsRawApi.class, configuration.getApiUrl()); - - emailsEntityApi = Feign.builder() - .requestInterceptor(getAuthenticationInterceptor()) - .options(connectionConfig) - .encoder(new GsonEncoder(camelCaseGson())) - .decoder(new GsonDecoder(camelCaseGson())) - .logger(new FeignLogger(EmailsEntityApi.class)) - .logLevel(Logger.Level.FULL) - .target(EmailsEntityApi.class, configuration.getApiUrl()); - } - - @Override - public ListWrapper listEmails(int offset, int limit, String orderBy, Map queryMap) throws HubspotApiException - { - Map safeQueryMap = queryMap != null ? queryMap : Collections.emptyMap(); - return execute(() -> emailsEntityApi.list(offset, limit, orderBy, safeQueryMap)); - } - - @Override - public EmailDetail getDetail(@NonNull String emailId) throws HubspotApiException - { - return execute(() -> emailsEntityApi.getDetail(emailId)); - } - - @Override - public String getContent(@NonNull String emailId) throws HubspotApiException - { - return execute(() -> emailsRawApi.getContent(emailId)); - } - - @Override - public String updateContent(@NonNull String emailId, @NonNull String emailContent) throws HubspotApiException - { - return execute(() -> emailsRawApi.update(emailId, emailContent)); - } - - @Override - public String updateAbContent(@NonNull String emailId, @NonNull String emailContent) throws HubspotApiException - { - return execute(() -> emailsRawApi.updateAb(emailId, emailContent)); - } - - @Override - public EmailDetail clone(@NonNull String emailId, @NonNull String name) throws HubspotApiException - { - return execute(() -> emailsEntityApi.clone(emailId, new CloneEmailRequest(name))); - } - - @Override - public EmailDetail createVariation(@NonNull String emailId, @NonNull String variationName) throws HubspotApiException - { - return execute(() -> emailsEntityApi.createVariation(emailId, new CreateVariationRequest(variationName))); - } - - @Override - public EmailDetail getBufferedDetail(@NonNull String emailId) throws HubspotApiException - { - return execute(() -> emailsEntityApi.getBufferedDetail(emailId)); - } -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsEntityApi.java b/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsEntityApi.java deleted file mode 100644 index b95eb0e..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsEntityApi.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.smartling.connector.hubspot.sdk.rest.api; - -import com.smartling.connector.hubspot.sdk.common.ListWrapper; -import com.smartling.connector.hubspot.sdk.email.CloneEmailRequest; -import com.smartling.connector.hubspot.sdk.email.CreateVariationRequest; -import com.smartling.connector.hubspot.sdk.email.EmailDetail; -import feign.Headers; -import feign.Param; -import feign.QueryMap; -import feign.RequestLine; - -import java.util.Map; - -public interface EmailsEntityApi -{ - @RequestLine("GET /marketing-emails/v1/emails?offset={offset}&limit={limit}&order={order}&property=" + EmailDetail.FIELDS) - ListWrapper list(@Param("offset") int offset, @Param("limit") int limit, - @Param("order") String orderBy, @QueryMap Map queryMap); - - @RequestLine("GET /marketing-emails/v1/emails/{email_id}?property=" + EmailDetail.FIELDS) - EmailDetail getDetail(@Param("email_id") String emailId); - - @RequestLine("GET /marketing-emails/v1/emails/{email_id}/buffer?property=" + EmailDetail.FIELDS) - EmailDetail getBufferedDetail(@Param("email_id") String emailId); - - @RequestLine("POST /marketing-emails/v1/emails/{email_id}/clone") - @Headers("Content-Type: application/json") - EmailDetail clone(@Param("email_id") String email_id, CloneEmailRequest cloneFormRequest); - - @RequestLine("POST /marketing-emails/v1/emails/{email_id}/create-variation") - @Headers("Content-Type: application/json") - EmailDetail createVariation(@Param("email_id") String emailId, CreateVariationRequest createVariationRequest); -} diff --git a/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsRawApi.java b/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsRawApi.java deleted file mode 100644 index 5051ee6..0000000 --- a/src/main/java/com/smartling/connector/hubspot/sdk/rest/api/EmailsRawApi.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.smartling.connector.hubspot.sdk.rest.api; - -import feign.Headers; -import feign.Param; -import feign.RequestLine; - -public interface EmailsRawApi -{ - @RequestLine("GET /marketing-emails/v1/emails/{email_id}") - String getContent(@Param("email_id") String emailId); - - @RequestLine("PUT /marketing-emails/v1/emails/{email_id}") - @Headers("Content-Type: application/json") - String update(@Param("email_id") String emailId, String emailAsJson); - - // This is a workaround specifically made for updating A/B Emails. The standard endpoint throws an error - @RequestLine("PUT /cosemail/v1/emails/{email_id}") - @Headers("Content-Type: application/json") - String updateAb(@Param("email_id") String emailId, String emailAsJson); -} diff --git a/src/test/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClientTest.java b/src/test/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClientTest.java deleted file mode 100644 index 1a6413d..0000000 --- a/src/test/java/com/smartling/connector/hubspot/sdk/rest/HubspotRestEmailsClientTest.java +++ /dev/null @@ -1,299 +0,0 @@ -package com.smartling.connector.hubspot.sdk.rest; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.tomakehurst.wiremock.junit.WireMockRule; -import com.smartling.connector.hubspot.sdk.HubspotApiException; -import com.smartling.connector.hubspot.sdk.HubspotEmailsClient; -import com.smartling.connector.hubspot.sdk.RefreshTokenData; -import com.smartling.connector.hubspot.sdk.common.ListWrapper; -import com.smartling.connector.hubspot.sdk.email.EmailAbStatus; -import com.smartling.connector.hubspot.sdk.email.EmailDetail; -import com.smartling.connector.hubspot.sdk.email.EmailState; -import com.smartling.connector.hubspot.sdk.rest.token.TokenProvider; -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.util.Date; -import java.util.List; -import java.util.Random; - -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; -import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; -import static com.github.tomakehurst.wiremock.client.WireMock.get; -import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; -import static com.github.tomakehurst.wiremock.client.WireMock.givenThat; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; -import static com.github.tomakehurst.wiremock.client.WireMock.put; -import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor; -import static com.github.tomakehurst.wiremock.client.WireMock.verify; -import static org.fest.assertions.api.Assertions.assertThat; - -public class HubspotRestEmailsClientTest -{ - - private static final int PORT = 10000 + new Random().nextInt(9999); - - private static final String BASE_URL = "http://localhost:" + PORT; - private static final String EMAIL_ID = "11358385328"; - - public static final ObjectMapper MAPPER = new ObjectMapper(); - - @Rule - public final WireMockRule wireMockRule = new WireMockRule(PORT); - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private TokenProvider tokenProvider; - private String originalToken; - private HubspotEmailsClient emailClient; - - @Before - public void init() - { - this.originalToken = RandomStringUtils.randomAlphanumeric(36); - - final Configuration configuration = Configuration.build(BASE_URL, null, null, null, null); - final RefreshTokenData refreshTokenData = new RefreshTokenData(); - refreshTokenData.setAccessToken(originalToken); - tokenProvider = () -> refreshTokenData; - this.emailClient = new HubspotRestEmailsClient(configuration, tokenProvider); - } - - @Test - public void shouldCallListEmails() throws Exception - { - givenThat(get(HttpMockUtils.path("/marketing-emails/v1/emails")).willReturn(HttpMockUtils.aJsonResponse(emailsContent()))); - - emailClient.listEmails(5, 15, "updated", null); - - verify(getRequestedFor(HttpMockUtils.urlStartingWith("/marketing-emails/v1/emails")) - .withQueryParam("limit", equalTo("15")) - .withQueryParam("offset", equalTo("5")) - .withQueryParam("order", equalTo("updated"))); - } - - @Test - public void shouldCallGetEmailById() throws Exception - { - givenThat(get(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID)).willReturn(HttpMockUtils.aJsonResponse(emailContent()))); - - emailClient.getDetail(EMAIL_ID); - - verify(getRequestedFor(HttpMockUtils.urlStartingWith("/marketing-emails/v1/emails/" + EMAIL_ID))); - } - - @Test - public void shouldCallGetEmailByIdBuffered() throws Exception - { - givenThat(get(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID + "/buffer")).willReturn(HttpMockUtils.aJsonResponse(emailContent()))); - - emailClient.getBufferedDetail(EMAIL_ID); - - verify(getRequestedFor(HttpMockUtils.urlStartingWith("/marketing-emails/v1/emails/" + EMAIL_ID + "/buffer"))); - } - - @Test - public void shouldCallGetEmailContent() throws Exception - { - givenThat(get(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID)).willReturn(HttpMockUtils.aJsonResponse("anyResponse"))); - - emailClient.getContent(EMAIL_ID); - - verify(getRequestedFor(HttpMockUtils.urlStartingWith("/marketing-emails/v1/emails/" + EMAIL_ID))); - } - - @Test - public void shouldCallUpdateEmail() throws Exception - { - givenThat(put(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID)).willReturn(HttpMockUtils.aJsonResponse("anyResponse"))); - - emailClient.updateContent(EMAIL_ID, emailContent()); - - verify(putRequestedFor(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID)) - .withHeader("Content-Type", equalTo("application/json"))); - } - - @Test - public void shouldCallUpdateAbEmail() throws Exception - { - givenThat(put(HttpMockUtils.path("/cosemail/v1/emails/" + EMAIL_ID)).willReturn(HttpMockUtils.aJsonResponse("anyResponse"))); - - emailClient.updateAbContent(EMAIL_ID, emailContent()); - - verify(putRequestedFor(HttpMockUtils.path("/cosemail/v1/emails/" + EMAIL_ID)) - .withHeader("Content-Type", equalTo("application/json"))); - } - - @Test - public void shouldCallCloneEmail() throws Exception - { - givenThat(post(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID + "/clone")).willReturn(HttpMockUtils.aJsonResponse(emailContent()))); - - emailClient.clone(EMAIL_ID, "new name"); - - verify(postRequestedFor(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID+ "/clone")) - .withHeader("Content-Type", equalTo("application/json")) - .withRequestBody(equalToJson("{\"name\":\"new name\"}"))); - } - - @Test - public void shouldCallCreateVariation() throws Exception - { - givenThat(post(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID + "/create-variation")).willReturn(HttpMockUtils.aJsonResponse(emailContent()))); - - emailClient.createVariation(EMAIL_ID, "new variation name"); - - verify(postRequestedFor(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID+ "/create-variation")) - .withHeader("Content-Type", equalTo("application/json")) - .withRequestBody(equalToJson("{\"variantName\":\"new variation name\"}"))); - } - - @Test - public void shouldThrowNativeExceptionForBadResponse() throws Exception - { - givenThat(post(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID + "/clone")).willReturn(HttpMockUtils.aJsonResponse("any").withStatus(400))); - expectedException.expect(HubspotApiException.class); - - emailClient.clone(EMAIL_ID, emailContent()); - } - - @Test - public void shouldThrowNativeExceptionForBrokenJson() throws Exception - { - givenThat(post(HttpMockUtils.path("/marketing-emails/v1/emails/" + EMAIL_ID + "/clone")).willReturn(HttpMockUtils.aJsonResponse("not JSON"))); - expectedException.expect(HubspotApiException.class); - - emailClient.clone(EMAIL_ID, emailContent()); - } - - @Test - public void shouldDeserializeFields() throws Exception - { - givenThat(get(HttpMockUtils.urlStartingWith("/marketing-emails/v1/emails")).willReturn(HttpMockUtils.aJsonResponse(emailsContent()))); - - ListWrapper emailDetails = emailClient.listEmails(5, 15, null, null); - - assertThat(emailDetails).isNotNull(); - assertThat(emailDetails.getTotalCount()).isEqualTo(6); - - List detailList = emailDetails.getDetailList(); - assertThat(detailList).isNotEmpty(); - - assertEmailDetail(detailList.get(0)); - } - - private String minifyJson(final String json) throws Exception { - JsonNode jsonNode = MAPPER.readValue(json, JsonNode.class); - return jsonNode.toString(); - } - - private void assertEmailDetail(final EmailDetail emailDetail) - { - assertThat(emailDetail.isAb()).isEqualTo(true); - assertThat(emailDetail.getAbHoursToWait()).isEqualTo(15); - assertThat(emailDetail.getAbStatus()).isEqualTo(EmailAbStatus.master); - assertThat(emailDetail.getAbSuccessMetric()).isEqualTo("OPENS_BY_DELIVERED"); - assertThat(emailDetail.getAbTestId()).isEqualTo(12561803622L); - assertThat(emailDetail.getAbTestPercentage()).isEqualTo(60); - assertThat(emailDetail.isAbVariation()).isEqualTo(false); - - assertThat(emailDetail.getAuthorName()).isEqualTo("HubSpot Test"); - assertThat(emailDetail.getCurrentState()).isEqualTo(EmailState.DRAFT_AB); - assertThat(emailDetail.getEmailType()).isEqualTo("BATCH_EMAIL"); - assertThat(emailDetail.getFromName()).isEqualTo("HubSpot Test"); - assertThat(emailDetail.getId()).isEqualTo(EMAIL_ID); - assertThat(emailDetail.getLanguage()).isEqualTo("en"); - assertThat(emailDetail.getName()).isEqualTo("sl-mm-test-email"); - assertThat(emailDetail.getPublishedByName()).isEqualTo("HubSpot Test"); - assertThat(emailDetail.getRssEmailByText()).isEqualTo("By HubSpot Test"); - assertThat(emailDetail.getRssEmailClickThroughText()).isEqualTo("Read more »"); - assertThat(emailDetail.getState()).isEqualTo(EmailState.DRAFT_AB); - assertThat(emailDetail.getSubject()).isEqualTo("Subject"); - assertThat(emailDetail.getSubscriptionName()).isEqualTo("Marketing Information"); - - assertThat(emailDetail.getUpdated()).isEqualTo(new Date(1563410545135L)); - assertThat(emailDetail.getCreated()).isEqualTo(new Date(1563410535135L)); - } - - private String emailContent() throws Exception { - return minifyJson(emailDetail()); - } - - private String emailsContent() throws Exception { - return minifyJson(emailDetails()); - } - - //language=JSON - private String emailDetail() { - return "{\n" + - " \"ab\": true,\n" + - " \"abHoursToWait\": 15,\n" + - " \"abStatus\": \"master\",\n" + - " \"abSuccessMetric\": \"OPENS_BY_DELIVERED\",\n" + - " \"abTestId\": 12561803622,\n" + - " \"abTestPercentage\": 60,\n" + - " \"abVariation\": false,\n" + - " \"authorName\": \"HubSpot Test\",\n" + - " \"created\": 1563410535135,\n" + - " \"currentState\": \"DRAFT_AB\",\n" + - " \"emailType\": \"BATCH_EMAIL\",\n" + - " \"fromName\": \"HubSpot Test\",\n" + - " \"htmlTitle\": \"\",\n" + - " \"id\": 11358385328,\n" + - " \"language\": \"en\",\n" + - " \"name\": \"sl-mm-test-email\",\n" + - " \"publishedByName\": \"HubSpot Test\",\n" + - " \"rssEmailByText\": \"By HubSpot Test\",\n" + - " \"rssEmailClickThroughText\": \"Read more »\",\n" + - " \"rssEmailCommentText\": \"Comment »\",\n" + - " \"state\": \"DRAFT_AB\",\n" + - " \"subject\": \"Subject\",\n" + - " \"subscriptionName\": \"Marketing Information\",\n" + - " \"updated\": 1563410545135\n" + - "}"; - } - - //language=JSON - private String emailDetails() { - return "{\n" + - " \"limit\": 10,\n" + - " \"objects\": [\n" + - " {\n" + - " \"ab\": true,\n" + - " \"abHoursToWait\": 15,\n" + - " \"abStatus\": \"master\",\n" + - " \"abSuccessMetric\": \"OPENS_BY_DELIVERED\",\n" + - " \"abTestId\": 12561803622,\n" + - " \"abTestPercentage\": 60,\n" + - " \"abVariation\": false,\n" + - " \"authorName\": \"HubSpot Test\",\n" + - " \"currentState\": \"DRAFT_AB\",\n" + - " \"created\": 1563410535135,\n" + - " \"emailType\": \"BATCH_EMAIL\",\n" + - " \"fromName\": \"HubSpot Test\",\n" + - " \"htmlTitle\": \"\",\n" + - " \"id\": 11358385328,\n" + - " \"language\": \"en\",\n" + - " \"name\": \"sl-mm-test-email\",\n" + - " \"publishedByName\": \"HubSpot Test\",\n" + - " \"rssEmailByText\": \"By HubSpot Test\",\n" + - " \"rssEmailClickThroughText\": \"Read more »\",\n" + - " \"rssEmailCommentText\": \"Comment »\",\n" + - " \"state\": \"DRAFT_AB\",\n" + - " \"subject\": \"Subject\",\n" + - " \"subscriptionName\": \"Marketing Information\",\n" + - " \"updated\": 1563410545135\n" + - " }\n" + - " ],\n" + - " \"offset\": 0,\n" + - " \"total\": 6,\n" + - " \"totalCount\": 6\n" + - "}"; - } -}