/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.masterdb.portfolio; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Factory; import org.testng.annotations.Test; import com.opengamma.master.portfolio.ManageablePortfolio; import com.opengamma.master.portfolio.ManageablePortfolioNode; import com.opengamma.master.portfolio.PortfolioDocument; import com.opengamma.master.portfolio.PortfolioSearchRequest; import com.opengamma.master.portfolio.PortfolioSearchResult; import com.opengamma.util.test.AbstractDbTest; import com.opengamma.util.test.DbTest; import com.opengamma.util.test.TestGroup; /** * Test DbPortfolioMaster. */ @Test(groups = TestGroup.UNIT_DB) public class DbPortfolioMasterTest extends AbstractDbTest { private static final Logger s_logger = LoggerFactory.getLogger(DbPortfolioMasterTest.class); private DbPortfolioMaster _prtMaster; @Factory(dataProvider = "databases", dataProviderClass = DbTest.class) public DbPortfolioMasterTest(String databaseType, String databaseVersion) { super(databaseType, databaseVersion); s_logger.info("running testcases for {}", databaseType); } //------------------------------------------------------------------------- @Override protected void doSetUp() { _prtMaster = new DbPortfolioMaster(getDbConnector()); } @Override protected void doTearDown() { _prtMaster = null; } //------------------------------------------------------------------------- @Test public void test_basics() throws Exception { assertNotNull(_prtMaster); assertEquals(true, _prtMaster.getUniqueIdScheme().equals("DbPrt")); assertNotNull(_prtMaster.getDbConnector()); assertNotNull(_prtMaster.getClock()); } @Test(description = "[PLAT-1723]") public void test_duplicate_names() throws Exception { PortfolioDocument a = new PortfolioDocument(); a.setPortfolio( new ManageablePortfolio("Name")); _prtMaster.add(a); PortfolioDocument b = new PortfolioDocument(); b.setPortfolio( new ManageablePortfolio("Name")); _prtMaster.add(b); PortfolioSearchResult search = _prtMaster.search(new PortfolioSearchRequest()); assertEquals(2, search.getPortfolios().size()); } @Test(description = "[PLAT-1723]") public void test_duplicate_names_complex() throws Exception { //Try to make the table big enough that database looses presumed order guarantees for (int i=0;i<10;i++) { String portfolioName = "Portfolio"; PortfolioDocument a = new PortfolioDocument(); a.setPortfolio( new ManageablePortfolio(portfolioName)); _prtMaster.add(a); for (int j = 0;j<10;j++){ ManageablePortfolioNode child = new ManageablePortfolioNode("X"); child.addChildNode(new ManageablePortfolioNode("Y")); a.getPortfolio().getRootNode().addChildNode(child); _prtMaster.update(a); } PortfolioDocument b = new PortfolioDocument(); b.setPortfolio( new ManageablePortfolio(portfolioName)); for (int j = 0;j<10;j++){ ManageablePortfolioNode childB = new ManageablePortfolioNode("X"); childB.addChildNode(new ManageablePortfolioNode("Y")); b.getPortfolio().getRootNode().addChildNode(childB); } _prtMaster.add(b); for (int j = 0;j<10;j++){ ManageablePortfolioNode child = new ManageablePortfolioNode("X"); child.addChildNode(new ManageablePortfolioNode("Y")); a.getPortfolio().getRootNode().addChildNode(child); _prtMaster.update(a); PortfolioSearchRequest request = new PortfolioSearchRequest(); request.setName(portfolioName); PortfolioSearchResult search = _prtMaster.search(request); assertEquals(2 * (i+1), search.getPortfolios().size()); } PortfolioSearchRequest request = new PortfolioSearchRequest(); request.setName(portfolioName); PortfolioSearchResult search = _prtMaster.search(request); assertEquals(2 * (i+1), search.getPortfolios().size()); } } //------------------------------------------------------------------------- @Test public void test_toString() { assertEquals("DbPortfolioMaster[DbPrt]", _prtMaster.toString()); } }