src/test/java/org/embulk/input/marketo/rest/MarketoRestClientTest.java in embulk-input-marketo-0.6.10 vs src/test/java/org/embulk/input/marketo/rest/MarketoRestClientTest.java in embulk-input-marketo-0.6.11
- old
+ new
@@ -18,15 +18,19 @@
import org.embulk.input.marketo.model.MarketoField;
import org.embulk.input.marketo.model.MarketoResponse;
import org.embulk.spi.DataException;
import org.embulk.util.retryhelper.jetty92.Jetty92ResponseReader;
import org.embulk.util.retryhelper.jetty92.Jetty92RetryHelper;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
@@ -440,7 +444,104 @@
List<ImmutableListMultimap> params = immutableListMultimapArgumentCaptor.getAllValues();
Multimap params1 = params.get(0);
Assert.assertEquals("GET", params1.get("_method").iterator().next());
Assert.assertEquals("nextPageToken=z4MgsIiC5C%3D%3D%3D%3D%3D%3D&batchSize=300", content);
+ }
+
+ @Test
+ public void testGetProgramsByTagType() throws Exception
+ {
+ ArrayNode listPages = (ArrayNode) OBJECT_MAPPER.readTree(new String(ByteStreams.toByteArray(this.getClass().getResourceAsStream("/fixtures/program_response.json")))).get("responses");
+ MarketoResponse<ObjectNode> page1 = OBJECT_MAPPER.readValue(listPages.get(0).toString(), RESPONSE_TYPE);
+ MarketoResponse<ObjectNode> page2 = OBJECT_MAPPER.readValue(listPages.get(1).toString(), RESPONSE_TYPE);
+
+ final String tagType = "dummy_tag";
+ final String tagValue = "dummy_value";
+
+ Mockito.doReturn(page1).doReturn(page2).when(marketoRestClient).doGet(
+ Mockito.eq(END_POINT + MarketoRESTEndpoint.GET_PROGRAMS_BY_TAG.getEndpoint()),
+ (Map) ArgumentMatchers.isNull(),
+ Mockito.any(Multimap.class),
+ Mockito.any(MarketoResponseJetty92EntityReader.class));
+ Iterable<ObjectNode> lists = marketoRestClient.getProgramsByTag(tagType, tagValue);
+ Iterator<ObjectNode> iterator = lists.iterator();
+ ObjectNode program1 = iterator.next();
+ ObjectNode program2 = iterator.next();
+ ObjectNode program3 = iterator.next();
+ Assert.assertFalse(iterator.hasNext());
+ Assert.assertEquals("MB_Sep_25_test_program", program1.get("name").asText());
+ Assert.assertEquals("TD Output Test Program", program2.get("name").asText());
+ Assert.assertEquals("Bill_progream", program3.get("name").asText());
+
+ ArgumentCaptor<ImmutableListMultimap> immutableListMultimapArgumentCaptor = ArgumentCaptor.forClass(ImmutableListMultimap.class);
+ Mockito.verify(marketoRestClient, Mockito.times(2)).doGet(
+ Mockito.eq(END_POINT + MarketoRESTEndpoint.GET_PROGRAMS_BY_TAG.getEndpoint()),
+ (Map) ArgumentMatchers.isNull(),
+ immutableListMultimapArgumentCaptor.capture(),
+ Mockito.any(MarketoResponseJetty92EntityReader.class));
+ List<ImmutableListMultimap> params = immutableListMultimapArgumentCaptor.getAllValues();
+
+ ImmutableListMultimap params1 = params.get(0);
+ Assert.assertEquals("0", params1.get("offset").get(0));
+ Assert.assertEquals("2", params1.get("maxReturn").get(0));
+ Assert.assertEquals("dummy_tag", params1.get("tagType").get(0));
+ Assert.assertEquals("dummy_value", params1.get("tagValue").get(0));
+
+ ImmutableListMultimap params2 = params.get(1);
+ Assert.assertEquals("2", params2.get("offset").get(0));
+ Assert.assertEquals("dummy_tag", params2.get("tagType").get(0));
+ Assert.assertEquals("dummy_value", params2.get("tagValue").get(0));
+ }
+
+ @Test
+ public void TestProgramsByDateRange() throws Exception
+ {
+ ArrayNode listPages = (ArrayNode) OBJECT_MAPPER.readTree(new String(ByteStreams.toByteArray(this.getClass().getResourceAsStream("/fixtures/program_response.json")))).get("responses");
+ MarketoResponse<ObjectNode> page1 = OBJECT_MAPPER.readValue(listPages.get(0).toString(), RESPONSE_TYPE);
+ MarketoResponse<ObjectNode> page2 = OBJECT_MAPPER.readValue(listPages.get(1).toString(), RESPONSE_TYPE);
+
+ Mockito.doReturn(page1).doReturn(page2).when(marketoRestClient).doGet(
+ Mockito.eq(END_POINT + MarketoRESTEndpoint.GET_PROGRAMS.getEndpoint()),
+ (Map) ArgumentMatchers.isNull(),
+ Mockito.any(Multimap.class),
+ Mockito.any(MarketoResponseJetty92EntityReader.class));
+ DateTime earliestUpdatedAt = DateTime.now().minusDays(10);
+ DateTime latestUpdatedAt = earliestUpdatedAt.plusDays(5);
+ String filterType = "filter1";
+ List<String> filterValues = Arrays.asList("value1", "value2");
+
+ Iterable<ObjectNode> lists = marketoRestClient.getProgramsByDateRange(earliestUpdatedAt.toDate(), latestUpdatedAt.toDate(), filterType, filterValues);
+ Iterator<ObjectNode> iterator = lists.iterator();
+ ObjectNode program1 = iterator.next();
+ ObjectNode program2 = iterator.next();
+ ObjectNode program3 = iterator.next();
+ Assert.assertFalse(iterator.hasNext());
+ Assert.assertEquals("MB_Sep_25_test_program", program1.get("name").asText());
+ Assert.assertEquals("TD Output Test Program", program2.get("name").asText());
+ Assert.assertEquals("Bill_progream", program3.get("name").asText());
+
+ ArgumentCaptor<ImmutableListMultimap> immutableListMultimapArgumentCaptor = ArgumentCaptor.forClass(ImmutableListMultimap.class);
+ Mockito.verify(marketoRestClient, Mockito.times(2)).doGet(
+ Mockito.eq(END_POINT + MarketoRESTEndpoint.GET_PROGRAMS.getEndpoint()),
+ (Map) ArgumentMatchers.isNull(),
+ immutableListMultimapArgumentCaptor.capture(),
+ Mockito.any(MarketoResponseJetty92EntityReader.class));
+ List<ImmutableListMultimap> params = immutableListMultimapArgumentCaptor.getAllValues();
+ DateTimeFormatter fmt = DateTimeFormat.forPattern(MarketoUtils.MARKETO_DATE_SIMPLE_DATE_FORMAT);
+
+ ImmutableListMultimap params1 = params.get(0);
+ Assert.assertEquals("0", params1.get("offset").get(0));
+ Assert.assertEquals("2", params1.get("maxReturn").get(0));
+ Assert.assertEquals(earliestUpdatedAt.toString(fmt), params1.get("earliestUpdatedAt").get(0));
+ Assert.assertEquals(latestUpdatedAt.toString(fmt), params1.get("latestUpdatedAt").get(0));
+ Assert.assertEquals("filter1", params1.get("filterType").get(0));
+ Assert.assertEquals(String.join(",", filterValues), params1.get("filterValues").get(0));
+
+ ImmutableListMultimap params2 = params.get(1);
+ Assert.assertEquals("2", params2.get("offset").get(0));
+ Assert.assertEquals(earliestUpdatedAt.toString(fmt), params2.get("earliestUpdatedAt").get(0));
+ Assert.assertEquals(latestUpdatedAt.toString(fmt), params2.get("latestUpdatedAt").get(0));
+ Assert.assertEquals("filter1", params2.get("filterType").get(0));
+ Assert.assertEquals(String.join(",", filterValues), params2.get("filterValues").get(0));
}
}