/*
   * Test method for
   * 'pm.net.nse.CorpActionDownloadManager.performConsolidation(CorpActionDownloader)'
   */
  public void testPerformConsolidation() throws Exception {
    CorpActionDownloadManager manager =
        new CorpActionDownloadManager(null) {
          PMDate date1 = new PMDate(1, 1, 2005);

          {
            Vector<CompanyActionVO> vector = new Vector<CompanyActionVO>();
            vector.add(new CompanyActionVO("20050101,STOCK,1,10,Split,false,"));
            htConsolidatedCorpAction.put(date1, vector);
          }

          @Override
          void shutDownManager() {
            assertEquals(2, htConsolidatedCorpAction.size());
            assertEquals(2, htConsolidatedCorpAction.get(date1).size());
            assertEquals(
                "STOCK", htConsolidatedCorpAction.get(date1).firstElement().getStockCode());
            assertEquals(
                "STOCK2", htConsolidatedCorpAction.get(date1).lastElement().getStockCode());
            PMDate date2 = new PMDate(2, 1, 2005);
            assertEquals(1, htConsolidatedCorpAction.get(date2).size());
            assertEquals(
                "STOCK2", htConsolidatedCorpAction.get(date2).lastElement().getStockCode());
          }
        };

    CorpActionDownloader downloader =
        new CorpActionDownloader("", manager) {
          @Override
          public Vector<CompanyActionVO> getCorpActions() {
            Vector<CompanyActionVO> retVal = new Vector<CompanyActionVO>();
            try {
              retVal.add(new CompanyActionVO("20050101,STOCK2,1,10,Split,false,"));
              retVal.add(new CompanyActionVO("20050102,STOCK2,1,10,Split,false,"));
            } catch (Exception e) {
            }
            return retVal;
          }
        };
    manager.performConsolidation(downloader);
    manager.shutDownManager(); // all tests r down inside that
  }
  public void testShutDownManager() throws Exception {
    String strLastDate = AppConfig.dateCORPACTIONDOWNLOADMANAGER.Value;
    String strInCompleteList = AppConfig.corpActionDownloadErrorList.Value;
    Hashtable<PMDate, Vector<CompanyActionVO>> htConsidated =
        new Hashtable<PMDate, Vector<CompanyActionVO>>();
    final Mock compayDAOMock = new Mock(CompanyDAO.class);
    compayDAOMock.expects(once()).method("writeConsolidatedActionData").with(eq(htConsidated));

    final Mock synchronizerMock = new Mock(CorpActionSynchronizer.class);
    synchronizerMock.expects(once()).method("applyCorpAction").withNoArguments();

    CorpActionDownloadManager manager =
        new CorpActionDownloadManager(null) {
          {
            inCompleteList = new Vector<String>();
            inCompleteList.add(STOCKCODE1);
          }

          @Override
          CompanyDAO getCompanyDAO() {
            return (CompanyDAO) compayDAOMock.proxy();
          }

          CorpActionSynchronizer getSynchronizer() {
            return (CorpActionSynchronizer) synchronizerMock.proxy();
          }
        };
    manager.shutDownManager();
    assertTrue(
        PMDateFormatter.formatYYYYMMDD(new PMDate())
            .equals(AppConfig.dateCORPACTIONDOWNLOADMANAGER.Value));
    assertTrue(STOCKCODE1.equals(AppConfig.corpActionDownloadErrorList.Value));

    AppConfig.dateCORPACTIONDOWNLOADMANAGER.Value = strLastDate;
    AppConfig.corpActionDownloadErrorList.Value = strInCompleteList;
    AppConfig.saveConfigDetails();
    compayDAOMock.verify();
    synchronizerMock.verify();
  }