/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.typescript.dto;
import org.apache.maven.plugin.testing.MojoRule;
import org.apache.maven.plugin.testing.resources.TestResources;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.File;
import java.nio.file.Files;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
/**
* @author Florent Benoit
*/
public class TypeScriptDTOGeneratorMojoTest {
/**
* Rule to manage the mojo (inject, get variables from mojo)
*/
@Rule
public MojoRule rule = new MojoRule();
/**
* Resources of each test mapped on the name of the method
*/
@Rule
public TestResources resources = new TestResources();
/**
* Helper method used to inject data in mojo
* @param mojo the mojo
* @param baseDir root dir on which we extract files
* @throws IllegalAccessException if unable to set variables
*/
protected void configure(TypeScriptDTOGeneratorMojo mojo, File baseDir) throws Exception {
this.rule.setVariableValueToObject(mojo, "targetDirectory", this.resources.getBasedir(""));
this.rule.setVariableValueToObject(mojo, "useClassPath", true);
}
/**
* Check that the TypeScript definition is generated and that WorkspaceDTO is generated (dependency is part of the test)
*/
@Test
public void testCheckTypeScriptGenerated() throws Exception {
File projectCopy = this.resources.getBasedir("project");
File pom = new File(projectCopy, "pom.xml");
assertNotNull(pom);
assertTrue(pom.exists());
TypeScriptDTOGeneratorMojo mojo = (TypeScriptDTOGeneratorMojo) this.rule.lookupMojo("build", pom);
configure(mojo, projectCopy);
mojo.execute();
File typeScriptFile = mojo.getTypescriptFile();
// Check file has been generated
Assert.assertTrue(typeScriptFile.exists());
// Now check there is "org.eclipse.che.plugin.typescript.dto.MyCustomDTO" inside
boolean foundMyCustomDTO = false;
try (BufferedReader reader = Files.newBufferedReader(typeScriptFile.toPath(), UTF_8)) {
String line = reader.readLine();
while (line != null && !foundMyCustomDTO) {
if (line.contains("MyCustomDTO")) {
foundMyCustomDTO = true;
}
line = reader.readLine();
}
}
Assert.assertTrue("The MyCustomDTO has not been generated in the typescript definition file.", foundMyCustomDTO);
}
}