Package require.i18n.plugin

Source Code of require.i18n.plugin.RequireI18NTest

package require.i18n.plugin;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.RegexFileFilter;
import org.apache.maven.plugin.MojoExecutionException;
import org.hamcrest.collection.IsArrayWithSize;
import org.hamcrest.core.Is;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;


public class RequireI18NTest {
 
  @Rule
  public TemporaryFolder propertiesFolder = new TemporaryFolder();

  @Rule
  public TemporaryFolder requirejsFolder = new TemporaryFolder();
  private File rootNlsDir;
 
  // Properties files names
  private static final String empty_default[][] = {};
  private static final String colors_default[][] = {{"red","red"},{"green","green"},{"blue","blue"}};
  private static final String colors_fr[][] = {{"red","redfr"},{"green","greenfr"},{"blue","bluefr"}};
  private static final String colors_fr_FR[][] = {{"red","redfrfr"},{"green","greenfrfr"},{"blue","bluefrfr"}};
 
  // Properties to add
  private static final Map<String, String[][]> propertiesValues = new HashMap<String, String[][]>(){
        {
          put("empty", empty_default);
            put("colors", colors_default);
            put("colors_fr", colors_fr);
            put("colors_fr_FR", colors_fr_FR);
        }
    };
 
  // Properties files created for tests
  private List<File> propertiesFiles = new ArrayList<File>();

  private RequireI18N requireI18N;

    @Before
    public void setUp() throws IOException {
      requireI18N = new RequireI18N();
      requireI18N.setProjectBaseDirectory(propertiesFolder.getRoot());
      requireI18N.setPropertiesDir(propertiesFolder.getRoot());
      requireI18N.setRequireI18NDir(requirejsFolder.newFolder("requirejs"));
     
      rootNlsDir = new File(requirejsFolder.getRoot().getAbsolutePath() + File.separator + "requirejs" + File.separator + "nls" + File.separator + "root");
    }
   
    @After
    public void cleanUp() {
      requireI18N = null;
    }

    @Test
    public void shouldCreateASingleFileContainingNoAttributesForAnEmptyPropertyFile() throws IOException, MojoExecutionException {
      File expectedFile = createPropertyFile("empty");
      requireI18N.execute();
      assertThat(expectedFile.exists(), is(true));
      assertThat(expectedFile.length(), is(0l));
      assertThat( rootNlsDir.listFiles().length, is(1));
      assertThat( rootNlsDir.listFiles()[0].getName(), is("empty.js"));
    }

  @Test
  public void shouldCreateNoFilesIfNoPropertiesFilesExist() throws MojoExecutionException {
    requireI18N.execute();
    assertThat( rootNlsDir.list().length, is(0));
  }
 
    @Test
    public void shouldCreateOneFileForAValidPropertyFile() throws IOException, MojoExecutionException {
      File expectedFile = createPropertyFile("colors");
      requireI18N.execute();
     
      assertThat( rootNlsDir.listFiles().length, is(1));
      assertThat( rootNlsDir.listFiles()[0].getName(), is("colors.js"));
     
    }

    @Test
    public void shouldCreateARequireFileForEachPropertiesFile() throws IOException, MojoExecutionException {
      final int expectedNumberOfJSFiles = 6;
      createAllPropertiesFiles();
      requireI18N.execute();
      Collection<File> requireFiles = FileUtils.listFiles(
            rootNlsDir.getParentFile(),
            new RegexFileFilter("^(.*?)"),
            DirectoryFileFilter.DIRECTORY
          );
      assertThat( requireFiles.size(), is(expectedNumberOfJSFiles));
    }

  private File createPropertyFile(String key) throws IOException {
    File newPropFile = propertiesFolder.newFile(key+".properties");
    BufferedWriter out = new BufferedWriter(new FileWriter(newPropFile));
       
    String [][] properties = propertiesValues.get(key);
    for (int i=0; i<properties.length; i++) {
      out.write(properties[i][0] + "=" + properties[i][1]);
      out.newLine();
    }
    out.close();
   
    return newPropFile;
  }
 
  private void createAllPropertiesFiles() throws IOException {
      Iterator<String> propFiles = propertiesValues.keySet().iterator();
      while (propFiles.hasNext()) {
        propertiesFiles.add(createPropertyFile(propFiles.next()));
      }
  }
}
TOP

Related Classes of require.i18n.plugin.RequireI18NTest

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.