@Test
public void testConfigureRemote() throws Exception {
removeRemotesConfig(repositoryFile);
refreshAndWait();
SWTBotTree tree = getOrOpenView().bot().tree();
SWTBotTreeItem remotesItem = myRepoViewUtil.getRemotesItem(tree,
repositoryFile).expand();
remotesItem = myRepoViewUtil.getRemotesItem(tree, repositoryFile)
.expand();
remotesItem.select();
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("NewRemoteCommand"));
SWTBotShell shell = bot.shell(UIText.NewRemoteDialog_WindowTitle);
shell.bot().textWithLabel(UIText.NewRemoteDialog_NameLabel).setText(
"testRemote");
// configure fetch first
shell.bot().radio(UIText.NewRemoteDialog_FetchRadio).click();
shell.bot().button(IDialogConstants.OK_LABEL).click();
// configure fetch dialog
shell = bot.shell(UIText.SimpleConfigureFetchDialog_WindowTitle);
// change uri
shell.bot().button(UIText.SimpleConfigureFetchDialog_ChangeUriButton)
.click();
shell = bot.shell(UIText.SelectUriWiazrd_Title);
shell.bot().text().setText("file:///" + remoteRepositoryFile.getPath());
shell.bot().button(IDialogConstants.FINISH_LABEL).click();
// now we have the fetch URI
// back to dialog
shell = bot.shell(UIText.SimpleConfigureFetchDialog_WindowTitle);
shell.bot().button(UIText.SimpleConfigureFetchDialog_AddRefSpecButton)
.click();
shell = bot.shell(UIText.SimpleFetchRefSpecWizard_WizardTitle);
shell.bot().textWithLabel(UIText.FetchSourcePage_SourceLabel).setText(
"refs/heads/*");
shell.bot().button(IDialogConstants.NEXT_LABEL).click();
shell.bot().textWithLabel(UIText.FetchDestinationPage_DestinationLabel)
.setText("refs/remotes/testRemote/*");
shell.bot().button(IDialogConstants.FINISH_LABEL).click();
// back to dialog
shell = bot.shell(UIText.SimpleConfigureFetchDialog_WindowTitle);
// save
shell.bot().button(UIText.SimpleConfigureFetchDialog_SaveButton)
.click();
refreshAndWait();
// assert 1 children
SWTBotTreeItem item = myRepoViewUtil.getRemotesItem(tree,
repositoryFile).expand().getNode("testRemote").expand();
List<String> children = item.getNodes();
assertEquals(2, children.size());
item.select();
// now we add push
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("ConfigurePushCommand"));
shell = bot.shell(UIText.SimpleConfigurePushDialog_WindowTitle);
shell.bot()
.button(UIText.SimpleConfigurePushDialog_AddRefSpecButton, 1)
.click();
// add push spec
shell = bot.shell(UIText.RefSpecDialog_WindowTitle);
shell.bot().textWithLabel(UIText.RefSpecDialog_SourceBranchPushLabel)
.setText("HEAD");
shell.bot().textWithLabel(UIText.RefSpecDialog_DestinationPushLabel)
.setText("refs/for/master");
final Text text = shell.bot().textWithLabel(
UIText.RefSpecDialog_DestinationPushLabel).widget;
shell.display.syncExec(new Runnable() {
public void run() {
text.setFocus();
text.notifyListeners(SWT.Modify, new Event());
}
});
shell.bot().button(IDialogConstants.OK_LABEL).click();
shell = bot.shell(UIText.SimpleConfigurePushDialog_WindowTitle);
shell.bot().button(UIText.SimpleConfigurePushDialog_SaveButton).click();
refreshAndWait();
// assert 2 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(2, children.size());
item.getNode(0).select();
// we remove the fetch, the URI is copied into push
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("RemoveFetchCommand"));
refreshAndWait();
// assert 1 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(1, children.size());
item.getNode(0).select();
// now we also remove the push
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("RemovePushCommand"));
refreshAndWait();
// assert 0 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(0, children.size());
myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand().getNode(
"testRemote").select();
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("ConfigureFetchCommand"));
String shellText = UIText.SimpleConfigureFetchDialog_WindowTitle;
shell = bot.shell(shellText);
// change uri
shell.bot().button(UIText.SimpleConfigureFetchDialog_ChangeUriButton)
.click();
shell = bot.shell(UIText.SelectUriWiazrd_Title);
shell.bot().text().setText("file:///" + remoteRepositoryFile.getPath());
shell.bot().button(IDialogConstants.FINISH_LABEL).click();
// back to dialog
shell = bot.shell(shellText);
// add refSpec
shell.bot().button(UIText.SimpleConfigureFetchDialog_AddRefSpecButton)
.click();
shell = bot.shell(UIText.SimpleFetchRefSpecWizard_WizardTitle);
shell.bot().textWithLabel(UIText.FetchSourcePage_SourceLabel).setText(
"refs/heads/*");
shell.bot().button(IDialogConstants.NEXT_LABEL).click();
shell.bot().textWithLabel(UIText.FetchDestinationPage_DestinationLabel)
.setText("refs/remotes/testRemote/*");
shell.bot().button(IDialogConstants.FINISH_LABEL).click();
// back to dialog
shell = bot.shell(shellText);
// save
shell.bot().button(UIText.SimpleConfigureFetchDialog_SaveButton)
.click();
refreshAndWait();
// assert 1 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(2, children.size());
// we remove the fetch again
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(2, children.size());
item.getNode(0).select();
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("RemoveFetchCommand"));
refreshAndWait();
myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand().getNode(
"testRemote").select();
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("ConfigurePushCommand"));
shellText = UIText.SimpleConfigurePushDialog_WindowTitle;
shell = bot.shell(shellText);
shell.bot().button(UIText.SimpleConfigurePushDialog_AddPushUriButton)
.click();
// back to dialog
shell = bot.shell(shellText);
shell = bot.shell(UIText.SelectUriWiazrd_Title);
shell.bot().text().setText("file:///" + remoteRepositoryFile.getPath());
shell.bot().button(IDialogConstants.FINISH_LABEL).click();
shell = bot.shell(shellText);
// Add is on two buttons
shell.bot()
.button(UIText.SimpleConfigurePushDialog_AddRefSpecButton, 1)
.click();
// add push spec
shell = bot.shell(UIText.RefSpecDialog_WindowTitle);
shell.bot().textWithLabel(UIText.RefSpecDialog_SourceBranchPushLabel)
.setText("HEAD");
shell.bot().textWithLabel(UIText.RefSpecDialog_DestinationPushLabel)
.setText("refs/for/master");
final Text text2 = shell.bot().textWithLabel(
UIText.RefSpecDialog_DestinationPushLabel).widget;
shell.display.syncExec(new Runnable() {
public void run() {
// focus for update of other fields
text2.setFocus();
text2.notifyListeners(SWT.Modify, new Event());
}
});
shell.bot().button(IDialogConstants.OK_LABEL).click();
// back to dialog
shell = bot.shell(shellText);
shell.bot().button(UIText.SimpleConfigurePushDialog_SaveButton).click();
refreshAndWait();
// assert 2 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(1, children.size());
item.select();
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("RepoViewRemoveRemote.label"));
shell = bot.shell(UIText.RepositoriesView_ConfirmDeleteRemoteHeader);
// Cancel
shell.bot().button(IDialogConstants.CANCEL_LABEL).click();
refreshAndWait();
// assert 2 children
item = myRepoViewUtil.getRemotesItem(tree, repositoryFile).expand()
.getNode("testRemote").expand();
children = item.getNodes();
assertEquals(1, children.size());
ContextMenuHelper.clickContextMenu(tree, myUtil
.getPluginLocalizedValue("RepoViewRemoveRemote.label"));
// OK