package org.jabref.gui;
import java.util.Arrays;
import java.util.Collection;
import org.jabref.model.strings.StringUtil;
import org.jabref.testutils.category.GUITests;
import org.assertj.swing.fixture.JTableFixture;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
@Category(GUITests.class)
public class ParameterizedMenuNewEntryTest extends AbstractUITest {
private final String databaseMode;
private final String entryType;
public ParameterizedMenuNewEntryTest(String databaseMode, String entryType) {
this.databaseMode = databaseMode;
this.entryType = entryType;
}
// Not working on Travis
@Test
public void addEntryOfGivenType() {
mainFrame.menuItemWithPath("File", "New " + databaseMode + " database").click();
JTableFixture entryTable = mainFrame.table();
entryTable.requireRowCount(0);
mainFrame.menuItemWithPath("BibTeX", "New entry by type...", StringUtil.capitalizeFirst(entryType)).click();
entryTable.requireRowCount(1);
}
@Parameterized.Parameters(name = "{index}: {0} : {1}")
public static Collection<Object[]> instancesToTest() {
// Create entry from menu
// Structure:
// {"BibTeX"/"biblatex", "type"}
// @formatter:off
return Arrays.asList(
new Object[]{"BibTeX", "article"},
new Object[]{"BibTeX", "inbook"},
new Object[]{"BibTeX", "book"},
new Object[]{"BibTeX", "booklet"},
new Object[]{"BibTeX", "incollection"},
new Object[]{"BibTeX", "conference"},
new Object[]{"BibTeX", "inproceedings"},
new Object[]{"BibTeX", "proceedings"},
new Object[]{"BibTeX", "manual"},
new Object[]{"BibTeX", "mastersthesis"},
new Object[]{"BibTeX", "phdthesis"},
new Object[]{"BibTeX", "techreport"},
new Object[]{"BibTeX", "unpublished"},
new Object[]{"BibTeX", "misc"},
new Object[]{"biblatex", "article"},
new Object[]{"biblatex", "inbook"},
new Object[]{"biblatex", "book"},
new Object[]{"biblatex", "booklet"},
new Object[]{"biblatex", "incollection"},
new Object[]{"biblatex", "conference"},
new Object[]{"biblatex", "inproceedings"},
new Object[]{"biblatex", "proceedings"},
new Object[]{"biblatex", "manual"},
new Object[]{"biblatex", "mastersthesis"},
new Object[]{"biblatex", "phdthesis"},
new Object[]{"biblatex", "techreport"},
new Object[]{"biblatex", "unpublished"},
new Object[]{"biblatex", "misc"}
);
// @formatter:on
}
}