package org.transgalactica.batch.salaire.rule;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.util.ReflectionTestUtils;
import org.transgalactica.batch.salaire.rule.impl.BasicFicheSalaireRule;
import org.transgalactica.management.data.people.bo.EmployeEntity;
import org.transgalactica.management.data.people.bo.MecanicienEntity;
import org.transgalactica.management.data.people.bo.PiloteEntity;
import org.transgalactica.management.data.people.bo.impl.JpaMecanicienEntity;
import org.transgalactica.management.data.people.bo.impl.JpaPiloteEntity;
import org.transgalactica.management.data.referentiel.bo.impl.JpaMecanicienSpecialiteEntity;
public class FicheSalaireRuleTest {
@Autowired
private FicheSalaireRule ficheSalaireRule = BeanUtils.instantiateClass(BasicFicheSalaireRule.class);
@Test
public void testCalculerSalaireBasePilote() {
PiloteEntity employe = BeanUtils.instantiateClass(JpaPiloteEntity.class);
BigDecimal salaire = ficheSalaireRule.calculerSalaireBase(employe);
assertNotNull(salaire);
assertEquals(8000, salaire.intValue());
}
@Test
public void testCalculerSalaireBaseMecanicien() {
MecanicienEntity employe = BeanUtils.instantiateClass(JpaMecanicienEntity.class);
BigDecimal salaire = ficheSalaireRule.calculerSalaireBase(employe);
assertNotNull(salaire);
assertEquals(10000, salaire.intValue());
}
@Test
public void testCalculerPrimeAnciennete() {
EmployeEntity employe = BeanUtils.instantiateClass(JpaPiloteEntity.class);
employe.setDateEmbauche(LocalDate.of(2000, 12, 23));
BigDecimal salaire = ficheSalaireRule.calculerPrimeAnciennete(employe, LocalDate.of(2007, 12, 3));
assertNotNull(salaire);
assertEquals(600, salaire.intValue());
}
@Test
public void testCalculerPrimeExperiencePilote() {
PiloteEntity employe = BeanUtils.instantiateClass(JpaPiloteEntity.class);
employe.setNombreHeuresVol(new Integer(7));
BigDecimal salaire = ficheSalaireRule.calculerPrimeExperience(employe);
assertNotNull(salaire);
assertEquals(7, salaire.intValue());
}
@Test
public void testCalculerPrimeExperienceMecanicien() {
MecanicienEntity employe = BeanUtils.instantiateClass(JpaMecanicienEntity.class);
JpaMecanicienSpecialiteEntity s1 = BeanUtils.instantiateClass(JpaMecanicienSpecialiteEntity.class);
ReflectionTestUtils.setField(s1, "nomSpecialite", "nomSpecialite");
employe.getSpecialites().add(s1);
JpaMecanicienSpecialiteEntity s2 = BeanUtils.instantiateClass(JpaMecanicienSpecialiteEntity.class);
ReflectionTestUtils.setField(s2, "nomSpecialite", "nomSpecialite2");
employe.getSpecialites().add(s2);
BigDecimal salaire = ficheSalaireRule.calculerPrimeExperience(employe);
assertNotNull(salaire);
assertEquals(2000, salaire.intValue());
}
}