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()));
}
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;
}
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);
}
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()));
}
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());
}
Aggregations