/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.model.suite;
import java.net.URI;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import com.emc.sa.model.BaseModelTest;
import com.emc.storageos.db.client.model.uimodels.CatalogCategory;
import com.emc.storageos.db.client.model.uimodels.CatalogService;
import com.emc.storageos.db.client.model.uimodels.ExecutionWindow;
import com.emc.sa.model.dao.ModelClient;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.NamedURI;
public class CatalogServiceTest extends BaseModelTest<CatalogService> {
private static final Logger _logger = Logger.getLogger(CatalogServiceTest.class);
public CatalogServiceTest() {
super(CatalogService.class);
}
@Test
public void testReparent() throws Exception {
_logger.info("Starting reparent CatalogService test");
ModelClient modelClient = getModelClient();
CatalogCategory parent1 = createCategoryWithLabel("Parent 1");
modelClient.save(parent1);
CatalogCategory parent2 = createCategoryWithLabel("Parent 2");
modelClient.save(parent2);
CatalogService service = createWithLabel("Service");
setParent(parent1, service);
modelClient.save(service);
List<CatalogService> parent1Children = modelClient.catalogServices().findByCatalogCategory(parent1.getId());
Assert.assertEquals(1, parent1Children.size());
Assert.assertEquals(service.getId(), parent1Children.get(0).getId());
List<CatalogService> parent2Children = modelClient.catalogServices().findByCatalogCategory(parent2.getId());
Assert.assertEquals(0, parent2Children.size());
setParent(parent2, service);
modelClient.save(service);
parent1Children = modelClient.catalogServices().findByCatalogCategory(parent1.getId());
Assert.assertEquals(0, parent1Children.size());
parent2Children = modelClient.catalogServices().findByCatalogCategory(parent2.getId());
Assert.assertEquals(1, parent2Children.size());
Assert.assertEquals(service.getId(), parent2Children.get(0).getId());
}
@Test
public void testPersistObject() throws Exception {
_logger.info("Starting persist CatalogService test");
CatalogService model = new CatalogService();
model.setId(URIUtil.createId(CatalogService.class));
model.setLabel("foo");
model.setApprovalRequired(true);
model.setBaseService("my service");
URI ewUri = URIUtil.createId(ExecutionWindow.class);
NamedURI ewId = new NamedURI(ewUri, "ewId");
model.setDefaultExecutionWindowId(ewId);
model.setDescription("my desc");
model.setExecutionWindowRequired(true);
model.setImage("my image");
model.setMaxSize(42);
model.setTitle("my title");
save(model);
model = findById(model.getId());
Assert.assertNotNull(model);
Assert.assertEquals("foo", model.getLabel());
Assert.assertEquals(true, model.getApprovalRequired());
Assert.assertEquals("my service", model.getBaseService());
Assert.assertEquals(ewId, model.getDefaultExecutionWindowId());
Assert.assertEquals("my desc", model.getDescription());
Assert.assertEquals(true, model.getExecutionWindowRequired());
Assert.assertEquals("my image", model.getImage());
Assert.assertEquals(new Integer(42), model.getMaxSize());
Assert.assertEquals("my title", model.getTitle());
}
@Test
public void testFindByCatalogCategory() {
_logger.info("Starting FindByCatalogCategory test");
ModelClient modelClient = getModelClient();
CatalogCategory root = createCategoryWithLabel("rooty");
modelClient.save(root);
CatalogService s1 = createWithLabel("s1");
s1.setCatalogCategoryId(new NamedURI(root.getId(), root.getLabel()));
modelClient.save(s1);
CatalogCategory c1 = createCategoryWithLabel("asdf");
c1.setCatalogCategoryId(new NamedURI(root.getId(), root.getLabel()));
modelClient.save(c1);
CatalogService s2 = createWithLabel("s2");
s2.setCatalogCategoryId(new NamedURI(c1.getId(), c1.getLabel()));
modelClient.save(s2);
CatalogService s3 = createWithLabel("s3");
s3.setCatalogCategoryId(new NamedURI(c1.getId(), c1.getLabel()));
modelClient.save(s3);
CatalogCategory c2 = createCategoryWithLabel("asdf2");
c2.setCatalogCategoryId(new NamedURI(root.getId(), root.getLabel()));
modelClient.save(c2);
CatalogService s4 = createWithLabel("s4");
s4.setCatalogCategoryId(new NamedURI(c2.getId(), c2.getLabel()));
modelClient.save(s4);
CatalogService s5 = createWithLabel("s5");
s5.setCatalogCategoryId(new NamedURI(c2.getId(), c2.getLabel()));
modelClient.save(s5);
CatalogService s6 = createWithLabel("s6");
s6.setCatalogCategoryId(new NamedURI(c2.getId(), c2.getLabel()));
modelClient.save(s6);
List<CatalogService> results = modelClient.catalogServices().findByCatalogCategory(root.getId());
Assert.assertNotNull(results);
Assert.assertEquals(1, results.size());
results = modelClient.catalogServices().findByCatalogCategory(c1.getId());
Assert.assertNotNull(results);
Assert.assertEquals(2, results.size());
results = modelClient.catalogServices().findByCatalogCategory(c2.getId());
Assert.assertNotNull(results);
Assert.assertEquals(3, results.size());
}
private CatalogCategory createCategoryWithLabel(String label) {
CatalogCategory model = new CatalogCategory();
model.setLabel(label);
model.setDescription("my desc");
model.setImage("my image");
model.setTitle("my title");
return model;
}
private CatalogService createWithLabel(String label) {
CatalogService model = new CatalogService();
model.setLabel(label);
model.setApprovalRequired(true);
model.setBaseService("my service");
URI ewUri = URIUtil.createId(ExecutionWindow.class);
NamedURI ewId = new NamedURI(ewUri, "ewId");
model.setDefaultExecutionWindowId(ewId);
model.setDescription("my desc");
model.setExecutionWindowRequired(true);
model.setImage("my image");
model.setMaxSize(42);
model.setTitle("my title");
return model;
}
private void setParent(CatalogCategory parent, CatalogService child) {
child.setCatalogCategoryId(new NamedURI(parent.getId(), parent.getLabel()));
}
}