Search in sources :

Example 1 with Order

use of org.motechproject.mds.util.Order in project motech by motech.

the class EmailAuditServiceBundleIT method shouldCountAndRetrieveEmailsBasedOnCriteria.

@Test
public void shouldCountAndRetrieveEmailsBasedOnCriteria() {
    emailRecordService.create(createEmailRecord("address@1.com", "something", DeliveryStatus.SENT));
    emailRecordService.create(createEmailRecord("address@2.com", "a subject", DeliveryStatus.SENT));
    emailRecordService.create(createEmailRecord("address3@1.com", "received this?", DeliveryStatus.RECEIVED));
    emailRecordService.create(createEmailRecord("something@1.com", "was sent", DeliveryStatus.SENT));
    emailRecordService.create(createEmailRecord("address@1.com", "error", DeliveryStatus.ERROR));
    QueryParams queryParams = new QueryParams(1, 10, new Order("subject", Order.Direction.DESC));
    EmailRecordSearchCriteria criteria = new EmailRecordSearchCriteria().withToAddress("address").withDeliveryStatuses(DeliveryStatus.SENT, DeliveryStatus.RECEIVED).withQueryParams(queryParams).withMessageTimeRange(new Range<DateTime>(null, null));
    assertEquals(3, emailAuditService.countEmailRecords(criteria));
    List<EmailRecord> records = emailAuditService.findEmailRecords(criteria);
    assertEquals(asList("something", "received this?", "a subject"), extract(records, on(EmailRecord.class).getSubject()));
    assertEquals(asList("address@1.com", "address3@1.com", "address@2.com"), extract(records, on(EmailRecord.class).getToAddress()));
    assertEquals(asList(DeliveryStatus.SENT, DeliveryStatus.RECEIVED, DeliveryStatus.SENT), extract(records, on(EmailRecord.class).getDeliveryStatus()));
}
Also used : Order(org.motechproject.mds.util.Order) EmailRecord(org.motechproject.email.domain.EmailRecord) QueryParams(org.motechproject.mds.query.QueryParams) EmailRecordSearchCriteria(org.motechproject.email.builder.EmailRecordSearchCriteria) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 2 with Order

use of org.motechproject.mds.util.Order in project motech by motech.

the class QueryParamsBuilder method orderListFromGridSettings.

private static List<Order> orderListFromGridSettings(GridSettings settings) {
    Order order = new Order(settings.getSortColumn(), settings.getSortDirection());
    List<Order> orderList = new ArrayList<>();
    orderList.add(order);
    if (!Constants.Util.ID_FIELD_NAME.equalsIgnoreCase(order.getField())) {
        // if the ordering is done on a field other than id
        // we want to add the id ordering as backup, so that results stay consistent
        orderList.add(orderIdAsc());
    }
    return orderList;
}
Also used : Order(org.motechproject.mds.util.Order) ArrayList(java.util.ArrayList)

Example 3 with Order

use of org.motechproject.mds.util.Order in project motech by motech.

the class MdsRestBundleIT method testBasicCrud.

@Test
public void testBasicCrud() throws Exception {
    final MotechDataService dataService = getDataService();
    // CREATE
    // create 11 records using REST
    getLogger().info("Creating instance via REST");
    for (int i = 0; i < 11; i++) {
        HttpPost post = new HttpPost(ENTITY_URL);
        post.setEntity(new StringEntity(recordJsonString("string" + i, i), ContentType.APPLICATION_JSON));
        HttpResponse response = getHttpClient().execute(post);
        assertNotNull(response);
        assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
    }
    // UPDATE
    // update records 4 & 5
    // we add "updated" at the end of the string
    // GET object Ids
    // TODO: should we return ID in REST responses?
    // TODO: invoke this lookup through REST
    QueryParams queryParams = new QueryParams(new Order("intField", Order.Direction.ASC));
    List objList = (List) MethodUtils.invokeMethod(dataService, "byIntSet", new Object[] { new HashSet<>(asList(4, 5)), queryParams });
    // verify that the lookup works correctly just in case
    assertNotNull(objList);
    assertEquals(2, objList.size());
    for (Object record : objList) {
        HttpPut put = new HttpPut(ENTITY_URL);
        put.setEntity(new StringEntity(recordJsonString(PropertyUtil.getProperty(record, "strField") + "Updated", (int) PropertyUtil.getProperty(record, "intField"), (long) PropertyUtil.getProperty(record, "id"))));
        HttpResponse response = getHttpClient().execute(put);
        assertNotNull(response);
        assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
    }
    // READ
    // read records from 5 to 1
    getLogger().info("Reading instances via REST");
    String body = getHttpClient().get(ENTITY_URL + "?page=2&pageSize=5&sort=intField&order=desc", new BasicResponseHandler());
    assertNotNull(body);
    RestResponse response = OBJECT_MAPPER.readValue(body, RestResponse.class);
    assertEquals(5, response.getData().size());
    for (int i = 0; i < 5; i++) {
        int expectedIntField = 5 - i;
        // we updated the int fields X 10 for these two records
        boolean fieldWasUpdated = expectedIntField == 5 || expectedIntField == 4;
        // and added "Updated" to the string field
        String expectedStrField = "string" + expectedIntField;
        if (fieldWasUpdated) {
            expectedStrField += "Updated";
        }
        Object record = response.getData().get(i);
        assertEquals(expectedStrField, PropertyUtils.getProperty(record, "strField"));
        assertEquals(expectedIntField, PropertyUtils.getProperty(record, "intField"));
    }
    for (Object rec1 : response.getData()) {
        String responseBody = getHttpClient().get(ENTITY_URL + "?id=" + PropertyUtils.getProperty(rec1, "id"), new BasicResponseHandler());
        assertNotNull(responseBody);
        RestResponse response2 = OBJECT_MAPPER.readValue(responseBody, RestResponse.class);
        assertEquals(response2.getData().get(0).get("strField"), PropertyUtils.getProperty(rec1, "strField"));
    }
    // DELETE
    // delete 5 records using REST
    getLogger().info("Delete instances via REST");
    List list2 = dataService.retrieveAll();
    for (int i = 0; i < 5; i++) {
        Object record2 = list2.get(i);
        long id = (long) PropertyUtils.getProperty(record2, "id");
        HttpDelete delete = new HttpDelete(ENTITY_URL + "/" + id);
        HttpResponse response2 = getHttpClient().execute(delete);
        assertNotNull(response2);
        assertEquals(HttpStatus.SC_OK, response2.getStatusLine().getStatusCode());
        assertNull(dataService.findById(id));
    }
    assertEquals(dataService.retrieveAll().size(), 6);
}
Also used : Order(org.motechproject.mds.util.Order) HttpPost(org.apache.http.client.methods.HttpPost) HttpDelete(org.apache.http.client.methods.HttpDelete) RestResponse(org.motechproject.mds.rest.RestResponse) BasicResponseHandler(org.apache.http.impl.client.BasicResponseHandler) HttpResponse(org.apache.http.HttpResponse) MotechDataService(org.motechproject.mds.service.MotechDataService) HttpPut(org.apache.http.client.methods.HttpPut) StringEntity(org.apache.http.entity.StringEntity) QueryParams(org.motechproject.mds.query.QueryParams) Arrays.asList(java.util.Arrays.asList) List(java.util.List) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 4 with Order

use of org.motechproject.mds.util.Order in project motech by motech.

the class InstanceServiceTest method shouldReturnRelatedInstances.

@Test
public void shouldReturnRelatedInstances() {
    mockDataService();
    mockAnotherEntity();
    mockEntity();
    mockSampleFields();
    mockAnotherEntityFields();
    mockTestClassEntity();
    mockTestClassService();
    mockTestClassFields();
    when(serviceForAnotherSample.findById(INSTANCE_ID)).thenReturn(sampleForRelationshipTesting());
    QueryParams queryParams = new QueryParams(1, 2, new Order(Constants.Util.ID_FIELD_NAME, Order.Direction.ASC));
    Records<BasicEntityRecord> records = instanceService.getRelatedFieldValue(ANOTHER_ENTITY_ID, INSTANCE_ID, "testClasses", new RelationshipsUpdate(), queryParams);
    assertNotNull(records);
    // page 1
    assertEquals(Integer.valueOf(1), records.getPage());
    // 2 pages total
    assertEquals(Integer.valueOf(2), records.getTotal());
    // 3 records total
    assertEquals(Integer.valueOf(3), records.getRecords());
    assertEquals(asList(1L, 2L), extract(records.getRows(), on(BasicEntityRecord.class).getFieldByName("id").getValue()));
    RelationshipsUpdate filter = new RelationshipsUpdate();
    filter.setRemovedIds(Arrays.asList(1L, 2L));
    filter.setAddedIds(Arrays.asList(50L));
    when(testClassMotechDataService.findByIds(filter.getAddedIds())).thenReturn(Arrays.asList(new TestClass(50)));
    records = instanceService.getRelatedFieldValue(ANOTHER_ENTITY_ID, INSTANCE_ID, "testClasses", filter, queryParams);
    assertNotNull(records);
    // page 1
    assertEquals(Integer.valueOf(1), records.getPage());
    // 1 page total
    assertEquals(Integer.valueOf(1), records.getTotal());
    // 2 records total
    assertEquals(Integer.valueOf(2), records.getRecords());
    // 1L and 2L removed, 50L added
    assertEquals(asList(3L, 50L), extract(records.getRows(), on(BasicEntityRecord.class).getFieldByName("id").getValue()));
}
Also used : Order(org.motechproject.mds.util.Order) RelationshipsUpdate(org.motechproject.mds.web.domain.RelationshipsUpdate) QueryParams(org.motechproject.mds.query.QueryParams) BasicEntityRecord(org.motechproject.mds.web.domain.BasicEntityRecord) Test(org.junit.Test)

Example 5 with Order

use of org.motechproject.mds.util.Order in project motech by motech.

the class QueryParamsBuilderTest method assertOrderPresent.

private void assertOrderPresent(QueryParams queryParams, int index, String field, Order.Direction direction) {
    Order order = queryParams.getOrderList().get(index);
    assertNotNull(order);
    assertEquals(field, order.getField());
    assertEquals(direction, order.getDirection());
}
Also used : Order(org.motechproject.mds.util.Order)

Aggregations

Order (org.motechproject.mds.util.Order)23 QueryParams (org.motechproject.mds.query.QueryParams)14 Test (org.junit.Test)13 ArrayList (java.util.ArrayList)6 Record (org.motechproject.mds.testutil.records.Record)6 DateTime (org.joda.time.DateTime)4 Arrays.asList (java.util.Arrays.asList)3 List (java.util.List)3 EmailRecordSearchCriteria (org.motechproject.email.builder.EmailRecordSearchCriteria)2 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 StringReader (java.io.StringReader)1 LocalDateTime (java.time.LocalDateTime)1 Collections.singletonList (java.util.Collections.singletonList)1 Comparator (java.util.Comparator)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 Query (javax.jdo.Query)1