/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.model.suite;
import java.net.URI;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import com.emc.storageos.db.client.model.uimodels.CatalogService;
import com.emc.sa.model.DBClientTestBase;
import com.emc.storageos.db.client.model.uimodels.Order;
import com.emc.storageos.db.client.model.uimodels.OrderParameter;
import com.emc.storageos.db.client.model.uimodels.OrderStatus;
import com.emc.sa.model.dao.ModelClient;
import com.emc.sa.model.util.SortedIndexUtils;
import com.emc.storageos.db.client.URIUtil;
public class SortedIndexTest extends DBClientTestBase {
private static final Logger _logger = Logger.getLogger(SortedIndexTest.class);
@Test
public void testSorting() {
Order o1 = createOrder(OrderStatus.PENDING);
ModelClient modelClient = getModelClient();
modelClient.save(o1);
OrderParameter op1 = createOrderParameter("op1", "op1Value", 2);
op1.setOrderId(o1.getId());
modelClient.save(op1);
OrderParameter op2 = createOrderParameter("op2", "op2Value", 1);
op2.setOrderId(o1.getId());
modelClient.save(op2);
OrderParameter op3 = createOrderParameter("op3", "op3Value", 3);
op3.setOrderId(o1.getId());
modelClient.save(op3);
List<OrderParameter> orderParameters = modelClient.orderParameters().findByOrderId(o1.getId());
Assert.assertNotNull(orderParameters);
Assert.assertEquals(3, orderParameters.size());
Assert.assertEquals(op2.getLabel(), orderParameters.get(0).getLabel());
Assert.assertEquals(op1.getLabel(), orderParameters.get(1).getLabel());
Assert.assertEquals(op3.getLabel(), orderParameters.get(2).getLabel());
SortedIndexUtils.moveDown(op1, modelClient);
orderParameters = modelClient.orderParameters().findByOrderId(o1.getId());
Assert.assertNotNull(orderParameters);
Assert.assertEquals(3, orderParameters.size());
Assert.assertEquals(op2.getLabel(), orderParameters.get(0).getLabel());
Assert.assertEquals(op3.getLabel(), orderParameters.get(1).getLabel());
Assert.assertEquals(op1.getLabel(), orderParameters.get(2).getLabel());
SortedIndexUtils.moveUp(op3, modelClient);
orderParameters = modelClient.orderParameters().findByOrderId(o1.getId());
Assert.assertNotNull(orderParameters);
Assert.assertEquals(3, orderParameters.size());
Assert.assertEquals(op3.getLabel(), orderParameters.get(0).getLabel());
Assert.assertEquals(op2.getLabel(), orderParameters.get(1).getLabel());
Assert.assertEquals(op1.getLabel(), orderParameters.get(2).getLabel());
OrderParameter op4 = createOrderParameter("op4", "op4Value", null);
op4.setOrderId(o1.getId());
modelClient.save(op4);
orderParameters = modelClient.orderParameters().findByOrderId(o1.getId());
Assert.assertNotNull(orderParameters);
Assert.assertEquals(4, orderParameters.size());
Assert.assertEquals(op3.getLabel(), orderParameters.get(0).getLabel());
Assert.assertEquals(op2.getLabel(), orderParameters.get(1).getLabel());
Assert.assertEquals(op1.getLabel(), orderParameters.get(2).getLabel());
Assert.assertEquals(op4.getLabel(), orderParameters.get(3).getLabel());
}
private static Order createOrder(OrderStatus status) {
Order model = new Order();
model.setId(URIUtil.createId(Order.class));
model.setLabel("foo");
URI catalogServiceId = URIUtil.createId(CatalogService.class);
model.setCatalogServiceId(catalogServiceId);
Date d = new Date();
model.setDateCompleted(d);
model.setMessage("my message");
model.setOrderStatus(status.name());
model.setSubmittedByUserId("urn:User:1");
model.setSummary("my summary");
return model;
}
private static OrderParameter createOrderParameter(String label, String value, Integer sortedIndex) {
OrderParameter model = new OrderParameter();
model.setId(URIUtil.createId(OrderParameter.class));
model.setLabel(label);
model.setFriendlyLabel("my friendly name");
model.setFriendlyValue("my friendly value");
model.setUserInput(false);
model.setValue(value);
model.setSortedIndex(sortedIndex);
return model;
}
}