/*******************************************************************************
* Copyright (c) 2013 Red Hat Inc. and others.
* 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:
* Neil Guzman - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.createrepo.listener.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.linuxtools.internal.rpm.createrepo.form.tests.ICreaterepoTestConstants;
import org.eclipse.linuxtools.internal.rpm.createrepo.form.tests.TestCreaterepoProject;
import org.eclipse.linuxtools.internal.rpm.createrepo.form.tests.TestUtils;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* SWTBot tests for CreaterepoResourceChangeListener. Simply create a project,
* close/delete it, and test if the activator is also closed.
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public class CreaterepoResourceChangeListenerTest {
private static SWTWorkbenchBot bot;
private static NullProgressMonitor monitor;
private static SWTBotView navigator;
private TestCreaterepoProject testProject;
/**
* Initialize the bot.
*/
@BeforeClass
public static void setUpBeforeClass() {
bot = new SWTWorkbenchBot();
monitor = new NullProgressMonitor();
try {
bot.shell(ICreaterepoTestConstants.MAIN_SHELL).activate();
} catch (WidgetNotFoundException e) {
// cannot activate main shell, continue anyways
}
TestUtils.openResourcePerspective(bot);
}
/**
* Create a new test project and open the .repo file.
*
* @throws Exception
*/
@Before
public void setUp() throws Exception {
testProject = new TestCreaterepoProject();
navigator = TestUtils.enterProjectFolder(bot);
assertTrue(testProject.getProject().exists());
TestUtils.openRepoFile(bot, navigator);
}
/**
* Delete the project when tests are done.
*
* @throws CoreException
*/
@After
public void tearDown() throws CoreException {
TestUtils.exitProjectFolder(bot, navigator);
testProject.dispose();
assertFalse(testProject.getProject().exists());
}
/**
* Test if editor is still open after closing the project.
*
* @throws CoreException
*/
@Test
public void testCloseProjectCloseEditor() throws CoreException {
assertFalse(bot.editors().isEmpty());
assertEquals(1, bot.editors().size());
assertNotNull(bot.multipageEditorByTitle(ICreaterepoTestConstants.REPO_NAME));
assertTrue(bot.multipageEditorByTitle(ICreaterepoTestConstants.REPO_NAME).isActive());
testProject.getProject().close(monitor);
assertFalse(testProject.getProject().isOpen());
assertTrue(bot.editors().isEmpty());
}
/**
* Test if editor is still open after deleting the project.
*
* @throws CoreException
*/
@Test
public void testDeleteProjectCloseEditor() throws CoreException {
assertFalse(bot.editors().isEmpty());
assertEquals(1, bot.editors().size());
assertNotNull(bot.multipageEditorByTitle(ICreaterepoTestConstants.REPO_NAME));
assertTrue(bot.multipageEditorByTitle(ICreaterepoTestConstants.REPO_NAME).isActive());
testProject.dispose();
assertFalse(testProject.getProject().exists());
assertTrue(bot.editors().isEmpty());
}
}