package org.transgalactica.batch.salaire.item; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Collections; import java.util.Locale; import javax.inject.Named; import org.junit.Before; import org.junit.Test; import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.core.StepExecution; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.test.MetaDataInstanceFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.transgalactica.batch.salaire.AbstractBatchTest; import org.transgalactica.batch.salaire.bo.SalaireTo; import org.transgalactica.batch.salaire.bo.impl.BasicSalaireTo; import org.transgalactica.management.data.referentiel.bo.EmployeType; public class FicheSalairePdfItemWriterTest extends AbstractBatchTest { private static final String TARGET_PATH = "target/BatchTest/" + System.currentTimeMillis() + "/"; @Autowired private ApplicationContext applicationContext; @Autowired @Named("salairePdfItemWriter") private ItemWriter<SalaireTo> writer; @Before public void createTargetDirectoryIfNotExist() throws IOException { Resource targetDirectory = applicationContext.getResource("file:./" + TARGET_PATH); if (!targetDirectory.exists()) { targetDirectory.getFile().mkdir(); } } public StepExecution getStepExection() { JobParametersBuilder parametersBuilder = new JobParametersBuilder(); parametersBuilder.addString("salaire.compute.date", "2011-12-03"); parametersBuilder.addString("salaire.edit.output.directory", "file:./" + TARGET_PATH); StepExecution execution = MetaDataInstanceFactory.createStepExecution(parametersBuilder.toJobParameters()); return execution; } @Test public void testWriteDefaultLocale() throws Exception { SalaireTo salaire = BeanUtils.instantiateClass(BasicSalaireTo.class); salaire.setNomEmploye("Wedge Antilles"); salaire.setTypeEmploye(EmployeType.PILOTE); salaire.setDateEmbaucheEmploye(LocalDate.of(2000, 2, 23)); salaire.setSalaireBase(new BigDecimal("8000")); salaire.setPrimeExperience(new BigDecimal("7")); salaire.setPrimeAnciennete(new BigDecimal("700")); salaire.setSalaire(new BigDecimal("8707")); writer.write(Collections.singletonList(salaire)); assertTrue(new FileSystemResource(TARGET_PATH + "Wedge Antilles_2011-12.pdf").exists()); // TODO : voir pour controler le contenu du fichier (hors metadata) } @Test public void testWriteLocaleJapan() throws Exception { Locale defaultLocale = Locale.getDefault(); try { Locale.setDefault(Locale.JAPAN); SalaireTo salaire = BeanUtils.instantiateClass(BasicSalaireTo.class); salaire.setNomEmploye("C3PO"); salaire.setTypeEmploye(EmployeType.PILOTE); salaire.setDateEmbaucheEmploye(LocalDate.of(2000, 2, 23)); salaire.setSalaireBase(new BigDecimal("8000")); salaire.setPrimeExperience(new BigDecimal("337")); salaire.setPrimeAnciennete(new BigDecimal("100")); salaire.setSalaire(new BigDecimal("8437")); writer.write(Collections.singletonList(salaire)); // TODO : voir pour controler le contenu du fichier (hors metadata) } finally { Locale.setDefault(defaultLocale); } } @Test public void testWriteLocaleArabe() throws Exception { Locale defaultLocale = Locale.getDefault(); try { Locale.setDefault(new Locale("ar", "MA")); SalaireTo salaire = BeanUtils.instantiateClass(BasicSalaireTo.class); salaire.setNomEmploye("Dathcha"); salaire.setTypeEmploye(EmployeType.PILOTE); salaire.setDateEmbaucheEmploye(LocalDate.of(2000, 2, 23)); salaire.setSalaireBase(new BigDecimal("5000")); salaire.setPrimeExperience(new BigDecimal("1000")); salaire.setPrimeAnciennete(new BigDecimal("0")); salaire.setSalaire(new BigDecimal("6000")); writer.write(Collections.singletonList(salaire)); // TODO : voir pour controler le contenu du fichier (hors metadata) } finally { Locale.setDefault(defaultLocale); } } }