/* * 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.ApprovalRequest; import com.emc.storageos.db.client.model.uimodels.ApprovalStatus; import com.emc.sa.model.BaseModelTest; import com.emc.storageos.db.client.model.uimodels.Order; import com.emc.sa.model.dao.ModelClient; import com.emc.storageos.db.client.URIUtil; public class ApprovalRequestTest extends BaseModelTest<ApprovalRequest> { private static final Logger _logger = Logger.getLogger(ApprovalRequestTest.class); public ApprovalRequestTest() { super(ApprovalRequest.class); } @Test public void testPersistObject() throws Exception { _logger.info("Starting persist ApprovalRequest test"); ApprovalRequest model = new ApprovalRequest(); model.setLabel("foo"); model.setApprovalStatus(ApprovalStatus.APPROVED.name()); model.setApprovedBy("billy"); Date d = new Date(); model.setDateActioned(d); model.setMessage("my message"); URI orderId = URIUtil.createId(Order.class); model.setOrderId(orderId); model.setTenant(DEFAULT_TENANT); save(model); model = findById(model.getId()); Assert.assertNotNull(model); Assert.assertEquals("foo", model.getLabel()); Assert.assertEquals(ApprovalStatus.APPROVED.name(), model.getApprovalStatus()); Assert.assertEquals("billy", model.getApprovedBy()); Assert.assertEquals(d, model.getDateActioned()); Assert.assertEquals("my message", model.getMessage()); Assert.assertEquals(orderId, model.getOrderId()); Assert.assertEquals(DEFAULT_TENANT, model.getTenant()); } @Test public void testMultiTenant() throws Exception { _logger.info("Starting multi tenant ApprovalRequest test"); ModelClient modelClient = getModelClient(); ApprovalRequest ar1 = create("t1", "foo1", ApprovalStatus.PENDING); modelClient.save(ar1); ApprovalRequest ar2 = create("t1", "bar2", ApprovalStatus.REJECTED); modelClient.save(ar2); ApprovalRequest ar3 = create("t2", "foo3", ApprovalStatus.REJECTED); modelClient.save(ar3); ApprovalRequest ar4 = create("t2", "bar4", ApprovalStatus.REJECTED); modelClient.save(ar4); ApprovalRequest ar5 = create("t2", "foo5", ApprovalStatus.APPROVED); modelClient.save(ar5); ApprovalRequest ar6 = create("t3", "bar6", ApprovalStatus.PENDING); modelClient.save(ar6); List<ApprovalRequest> approvalRequests = modelClient.approvalRequests().findAll("t1"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(2, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findAll("t2"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(3, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findAll("t3"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t1", "foo"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t1", "ba"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t1", "ab"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t2", "ba"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t2", "fo"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(2, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t3", "ba"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByLabel("t3", "foo"); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t1", ApprovalStatus.PENDING); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t1", ApprovalStatus.APPROVED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t1", ApprovalStatus.REJECTED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t2", ApprovalStatus.PENDING); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t2", ApprovalStatus.APPROVED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t2", ApprovalStatus.REJECTED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(2, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t3", ApprovalStatus.PENDING); Assert.assertNotNull(approvalRequests); Assert.assertEquals(1, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t3", ApprovalStatus.APPROVED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); approvalRequests = modelClient.approvalRequests().findByApprovalStatus("t3", ApprovalStatus.REJECTED); Assert.assertNotNull(approvalRequests); Assert.assertEquals(0, approvalRequests.size()); } private static ApprovalRequest create(String tenant, String label, ApprovalStatus status) { ApprovalRequest model = new ApprovalRequest(); model.setLabel(label); model.setApprovalStatus(status.name()); model.setApprovedBy("billy"); Date d = new Date(); model.setDateActioned(d); model.setMessage("my message"); URI orderId = URIUtil.createId(Order.class); model.setOrderId(orderId); model.setTenant(tenant); return model; } }