Package org.projectforge.fibu

Source Code of org.projectforge.fibu.RechnungCacheTest

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.fibu;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.math.BigDecimal;
import java.util.Iterator;
import java.util.Set;

import org.junit.Test;
import org.projectforge.calendar.DayHolder;
import org.projectforge.test.TestBase;


public class RechnungCacheTest extends TestBase
{
  private AuftragDao auftragDao;

  private RechnungDao rechnungDao;

  private RechnungCache rechnungCache;

  @Test
  public void baseTest()
  {
    final DayHolder today = new DayHolder();
    logon(getUser(TEST_FINANCE_USER));
    final AuftragDO auftrag = new AuftragDO();
    AuftragsPositionDO auftragsPosition = new AuftragsPositionDO();
    auftragsPosition.setTitel("Pos 1");
    auftrag.addPosition(auftragsPosition);
    auftragsPosition = new AuftragsPositionDO();
    auftragsPosition.setTitel("Pos 2");
    auftrag.addPosition(auftragsPosition);
    auftrag.setNummer(auftragDao.getNextNumber(auftrag));
    auftragDao.save(auftrag);

    final RechnungDO rechnung1 = new RechnungDO();
    RechnungsPositionDO position = new RechnungsPositionDO();
    position.setAuftragsPosition(auftrag.getPosition((short) 1)).setEinzelNetto(new BigDecimal("100")).setText("1.1");
    rechnung1.addPosition(position);
    position = new RechnungsPositionDO();
    position.setAuftragsPosition(auftrag.getPosition((short) 2)).setEinzelNetto(new BigDecimal("200")).setText("1.2");
    rechnung1.addPosition(position);
    rechnung1.setNummer(rechnungDao.getNextNumber(rechnung1)).setDatum(today.getSQLDate());
    rechnungDao.save(rechnung1);

    final RechnungDO rechnung2 = new RechnungDO();
    position = new RechnungsPositionDO();
    position.setAuftragsPosition(auftrag.getPosition((short) 1)).setEinzelNetto(new BigDecimal("400")).setText("2.1");
    rechnung2.addPosition(position);
    rechnung2.setNummer(rechnungDao.getNextNumber(rechnung2)).setDatum(today.getSQLDate());
    rechnungDao.save(rechnung2);

    Set<RechnungsPositionVO> set = rechnungCache.getRechnungsPositionVOSetByAuftragId(auftrag.getId());
    assertEquals("3 invoice positions expected.", 3, set.size());
    final Iterator<RechnungsPositionVO> it = set.iterator();
    RechnungsPositionVO posVO = it.next(); // Positions are ordered.
    assertEquals("1.1", posVO.getText());
    posVO = it.next();
    assertEquals("1.2", posVO.getText());
    posVO = it.next();
    assertEquals("2.1", posVO.getText());
    assertTrue(new BigDecimal("700").compareTo(RechnungDao.getNettoSumme(set)) == 0);

    set = rechnungCache.getRechnungsPositionVOSetByAuftragsPositionId(auftrag.getPosition((short)1).getId());
    assertEquals("2 invoice positions expected.", 2, set.size());
    assertTrue(new BigDecimal("500").compareTo(RechnungDao.getNettoSumme(set)) == 0);

    set = rechnungCache.getRechnungsPositionVOSetByAuftragsPositionId(auftrag.getPosition((short)2).getId());
    assertEquals("1 invoice positions expected.", 1, set.size());
    assertTrue(new BigDecimal("200").compareTo(RechnungDao.getNettoSumme(set)) == 0);

    final RechnungDO rechnung = rechnungDao.getById(rechnung2.getId());
    rechnung.getPosition(0).setAuftragsPosition(null);
    rechnungDao.update(rechnung);
    set = rechnungCache.getRechnungsPositionVOSetByAuftragId(auftrag.getId());
    assertEquals("2 invoice positions expected.", 2, set.size());
    assertTrue(new BigDecimal("300").compareTo(RechnungDao.getNettoSumme(set)) == 0);
  }

  public void setAuftragDao(final AuftragDao auftragDao)
  {
    this.auftragDao = auftragDao;
  }

  public void setRechnungCache(final RechnungCache rechnungCache)
  {
    this.rechnungCache = rechnungCache;
  }

  public void setRechnungDao(final RechnungDao rechnungDao)
  {
    this.rechnungDao = rechnungDao;
  }
}
TOP

Related Classes of org.projectforge.fibu.RechnungCacheTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.