/*******************************************************************************
* Copyright 2013 Ivan Shubin http://mindengine.net
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package net.mindengine.blogix.tests.acceptance;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import net.mindengine.blogix.export.Exporter.BlogixExporter;
import net.mindengine.blogix.tests.RequestSampleParser;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ExporterAccTest {
private static final String BASE_TESTS = "exportsAllRoutesSuccessfully";
private File destinationDir;
@BeforeClass
public void init() throws IOException {
destinationDir = new File("target" + File.separator + "exported-routes");
if ( destinationDir.exists() ) {
FileUtils.cleanDirectory(destinationDir);
}
else {
FileUtils.forceMkdir(destinationDir);
}
}
@AfterClass
public void removeTempDirectories() throws IOException {
if ( destinationDir.exists() ) {
FileUtils.deleteDirectory(destinationDir);
}
}
@Test
public void exportsAllRoutesSuccessfully() throws Exception {
BlogixExporter exporter = new BlogixExporter(this.destinationDir);
exporter.exportAll();
}
@Test(dependsOnMethods = BASE_TESTS,
dataProvider="provideExportedFilesWithExpectedContent")
public void exportsSimpleRoutes(String filePath, String expectedContent) throws Exception {
assertThat(readFile(destinationDir.getPath() + filePath), is(expectedContent));
}
private String readFile(String path) throws IOException {
return FileUtils.readFileToString(new File(path));
}
@Test
public void shouldLoadTestRequestSamples() throws IOException, URISyntaxException {
List<Pair<String, String>> checks = RequestSampleParser.loadRequestChecksFromFile(new File(getClass().getResource("/exported-samples.txt").toURI()));
assertThat(checks.size(), is(9));
assertThat(checks.get(0).getLeft(), is("/index.html"));
assertThat(checks.get(1).getLeft(), is("/help/index.html"));
assertThat(checks.get(2).getLeft(), is("/article/123/2012-01-12/index.html"));
assertThat(checks.get(3).getLeft(), is("/article/1/2012-01-13/index.html"));
assertThat(checks.get(4).getLeft(), is("/file/someFile.txt"));
assertThat(checks.get(5).getLeft(), is("/no-tile/index.html"));
assertThat(checks.get(6).getLeft(), is("/file/customView.txt"));
assertThat(checks.get(7).getLeft(), is("/file/customFile.txt"));
assertThat(checks.get(8).getLeft(), is("/someFile.txt"));
}
@Test (dependsOnMethods = BASE_TESTS)
public void exportsImageFile() throws Exception {
File file = new File(destinationDir.getAbsolutePath() + File.separator + "file" + File.separator + "customImage.jpg");
assertThat(file.getAbsolutePath() + " does not exist", file.exists(), is(true));
}
@DataProvider
public String[][] provideExportedFilesWithExpectedContent() throws URISyntaxException, IOException {
return RequestSampleParser.loadSamplesAsDataProvider(new File(getClass().getResource("/exported-samples.txt").toURI()));
}
}