package org.jabref.gui; import javax.swing.JButton; import org.jabref.testutils.category.GUITests; import org.assertj.swing.core.GenericTypeMatcher; import org.assertj.swing.dependency.jsr305.Nonnull; import org.assertj.swing.fixture.JTableFixture; import org.junit.Test; import org.junit.experimental.categories.Category; import static org.assertj.swing.finder.WindowFinder.findDialog; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @Category(GUITests.class) public class UndoTest extends AbstractUITest { @Test public void undoCutOfMultipleEntries() { importBibIntoNewDatabase(getAbsolutePath("testbib/testjabref.bib")); JTableFixture entryTable = mainFrame.table(); assertTrue("The database must have at least 2 entries for the test to begin!", entryTable.rowCount() >= 2); entryTable.selectRows(0, 1); entryTable.requireSelectedRows(0, 1); int oldRowCount = entryTable.rowCount(); mainFrame.menuItemWithPath("Edit", "Cut").click(); mainFrame.menuItemWithPath("Edit", "Undo").click(); entryTable.requireRowCount(oldRowCount); closeDatabase(); exitJabRef(); } @Test public void undoRedoUpdatedCorrectly() { newDatabase(); assertFalse(mainFrame.menuItemWithPath("Edit", "Undo").isEnabled()); assertFalse(mainFrame.menuItemWithPath("Edit", "Redo").isEnabled()); JTableFixture entryTable = mainFrame.table(); mainFrame.menuItemWithPath("BibTeX", "New entry...").click(); findDialog(EntryTypeDialog.class).withTimeout(10_000).using(robot()) .button(new GenericTypeMatcher<JButton>(JButton.class) { @Override protected boolean isMatching(@Nonnull JButton jButton) { return "Book".equals(jButton.getText()); } }).click(); assertTrue(mainFrame.menuItemWithPath("Edit", "Undo").isEnabled()); assertFalse(mainFrame.menuItemWithPath("Edit", "Redo").isEnabled()); entryTable.requireRowCount(1); mainFrame.menuItemWithPath("Edit", "Undo").click(); assertFalse(mainFrame.menuItemWithPath("Edit", "Undo").isEnabled()); assertTrue(mainFrame.menuItemWithPath("Edit", "Redo").isEnabled()); entryTable.requireRowCount(0); closeDatabase(); exitJabRef(); } }