/*******************************************************************************
* Copyright (c) 2010 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
*******************************************************************************/
package org.eclipse.linuxtools.changelog.ui.tests.swtbot;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import org.eclipse.core.runtime.Path;
import org.eclipse.linuxtools.changelog.ui.tests.utils.ChangeLogTestProject;
import org.eclipse.linuxtools.changelog.ui.tests.utils.ProjectExplorer;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.eclipse.swtbot.swt.finder.widgets.TimeoutException;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
/**
*
* UI test for "Prepare ChangeLog" when project not shared.
*
*/
public class DisabledPrepareChangelogSWTBotTest extends AbstractSWTBotTest {
private final String projectName = "not-shared";
private ChangeLogTestProject project;
@Before
public void setUp() throws Exception {
project = new ChangeLogTestProject(projectName);
}
@After
public void tearDown() throws Exception {
this.project.getTestProject().delete(true, null);
}
/**
* If the project is not shared by any CVS or SVN team provider, "Prepare ChangeLog"
* should be disabled.
*
* @throws Exception
*/
@Test
@Ignore
public void cannotPrepareChangeLogOnNonCVSOrSVNProject() throws Exception {
assertNull(project.getTestProject().findMember(new Path("/ChangeLog")));
final String changeLogContent = "2010-12-08 Will Probe <will@example.com>\n\n" +
"\t* path/to/some/non-existing/file.c: New file.\n";
project.addFileToProject("/", "ChangeLog", new ByteArrayInputStream(changeLogContent.getBytes()));
assertNotNull(project.getTestProject().findMember(new Path("/ChangeLog")));
// select ChangeLog file
String teamProviderString = "n/a";
SWTBotTreeItem projectItem = ProjectExplorer.expandProject(projectExplorerViewTree, projectName, teamProviderString);
SWTBotTreeItem changeLogItem = ProjectExplorer.getProjectItem(projectItem, "ChangeLog");
changeLogItem.select();
long oldTimeout = SWTBotPreferences.TIMEOUT;
SWTBotPreferences.TIMEOUT = 100;
try {
bot.menu("Prepare ChangeLog").click(); // Should be disabled (throws exception)
fail("'Prepare ChangeLog' should be disabled");
} catch (TimeoutException e) {
assertTrue(e.getMessage().contains("The widget with mnemonic 'Prepare ChangeLog' was not enabled."));
}
SWTBotPreferences.TIMEOUT = oldTimeout;
}
}