package org.transgalactica.management.business.logistics.service;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.transgalactica.fwk.test.util.SecurityContextTestUtils;
import org.transgalactica.management.business.logistics.exception.VaisseauInexistantException;
import org.transgalactica.management.business.logistics.TestConfig;
import org.transgalactica.management.data.materiel.bo.VaisseauEntity;
import org.transgalactica.management.data.materiel.bo.VaisseauSearchCriteria;
import org.transgalactica.management.data.materiel.bo.VaisseauSummary;
import org.transgalactica.management.data.materiel.bo.impl.BasicVaisseauSearchCriteria;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
@TransactionConfiguration
@Transactional
public class VaisseauServiceTest {
@Autowired
private BeanFactory beanFactory;
@Autowired
@Qualifier("daoVaisseauService")
private VaisseauService vaisseauService;
@Before
public void setSecurityRoleInContext() {
SecurityContextTestUtils.setUsernamePasswordAuthenticationTokenInSecurityContext("superGestionnaire", "xxx",
"ROLE_SUPER_GESTIONNAIRE");
}
@Test(expected = VaisseauInexistantException.class)
public void testChargerVaisseauInexistant() {
vaisseauService.chargerVaisseau("999999");
}
@Test
public void testChargerVaisseau() {
VaisseauEntity vaisseau = vaisseauService.chargerVaisseau("Faucon Millenium");
assertEquals("Faucon Millenium", vaisseau.getImmatriculation());
}
@Test
public void testRechercherVaisseaux() {
VaisseauSearchCriteria criteres = beanFactory.getBean(BasicVaisseauSearchCriteria.class);
criteres.setModele("cargo YT-1300");
List<VaisseauSummary> vaisseaux = vaisseauService.rechercherVaisseaux(criteres);
assertEquals(2, vaisseaux.size());
}
@Test
public void testSupprimerVaisseau() {
VaisseauEntity vaisseau = vaisseauService.chargerVaisseau("Leader rouge");
assertNotNull(vaisseau);
vaisseauService.supprimerVaisseau(vaisseau);
}
@Test
public void testEnregistrerVaisseau() {
VaisseauEntity vaisseau = beanFactory.getBean(VaisseauEntity.class.getName(), VaisseauEntity.class);
vaisseau.setImmatriculation("immatriculation");
vaisseau.setModele("modele");
vaisseauService.enregistrerVaisseau(vaisseau);
VaisseauEntity vaisseau2 = vaisseauService.chargerVaisseau(vaisseau.getImmatriculation());
assertEquals("immatriculation", vaisseau2.getImmatriculation());
assertEquals("modele", vaisseau2.getModele());
}
}