use of com.oxygenxml.git.view.remotes.CurrentBranchRemotesDialog.RemoteBranchItem in project oxygen-git-client-addon by oxygenxml.
the class RemoteVisualTests method testTrackRemoteBranch.
/**
* <p><b>Description:</b> Tests the "Track remote branch" action from remote button of git staging toolbar.</p>
* <p><b>Bug ID:</b> EXM-40858</p>
*
* @author Alex_Smarandache
*
* @throws Exception
*/
public void testTrackRemoteBranch() throws Exception {
final String remoteRepo2Branch = "branch_remote_repo_2";
final String remote2 = "remote2_name";
// Creates the remote repository.
createRepository(REMOTE_REPO2);
Repository remoteRepository = gitAccess.getRepository();
addRemote(localRepository, remoteRepository, remote2);
gitAccess.createBranch(remoteRepo2Branch);
File file = new File(REMOTE_REPO2, "remote2.txt");
file.createNewFile();
setFileContent(file, "remote2content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote2.txt"));
gitAccess.commit("First remote2 commit.");
// Make the first commit for the local repository
file = new File(LOCAL_REPO, "local.txt");
file.createNewFile();
setFileContent(file, "local content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "local.txt"));
gitAccess.commit("First local commit.");
// Make the first commit for the remote repository and create a branch for it.
gitAccess.setRepositorySynchronously(REMOTE_REPO);
file = new File(REMOTE_REPO, "remote1.txt");
file.createNewFile();
setFileContent(file, "remote content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote1.txt"));
gitAccess.commit("First remote commit.");
// Switch back to local repo and create local branch
gitAccess.setRepositorySynchronously(LOCAL_REPO);
gitAccess.createBranch(LOCAL_BRANCH);
gitAccess.fetch();
JFrame frame = new JFrame();
try {
// Init UI
GitController gitCtrl = new GitController();
GitActionsManager gitActionsManager = new GitActionsManager(gitCtrl, null, null, refreshSupport);
stagingPanel = new StagingPanel(refreshSupport, gitCtrl, null, gitActionsManager);
frame.getContentPane().add(stagingPanel);
frame.pack();
frame.setVisible(true);
flushAWT();
refreshSupport.call();
flushAWT();
SwingUtilities.invokeLater(() -> gitActionsManager.getTrackRemoteBranchAction().actionPerformed(null));
flushAWT();
CurrentBranchRemotesDialog[] trackRemoteDialog = new CurrentBranchRemotesDialog[1];
trackRemoteDialog[0] = (CurrentBranchRemotesDialog) findDialog(Tags.CONFIGURE_REMOTE_FOR_BRANCH);
assertNotNull(trackRemoteDialog);
flushAWT();
JComboBox<RemoteBranchItem> remoteBranches = trackRemoteDialog[0].getRemoteBranchItems();
assertNotNull(remoteBranches);
assertEquals(2, remoteBranches.getItemCount());
assertEquals("origin", gitAccess.getRemoteFromCurrentBranch());
RemoteBranchItem currentSelected = (RemoteBranchItem) remoteBranches.getSelectedItem();
assertEquals("origin/main", currentSelected.toString());
remoteBranches.setSelectedIndex(1);
currentSelected = (RemoteBranchItem) remoteBranches.getSelectedItem();
assertEquals("remote2_name/main", currentSelected.toString());
flushAWT();
sleep(500);
SwingUtilities.invokeLater(() -> trackRemoteDialog[0].getOkButton().doClick());
// Test if the config file is updated after user confirmation.
SwingUtilities.invokeLater(() -> gitActionsManager.getTrackRemoteBranchAction().actionPerformed(null));
flushAWT();
trackRemoteDialog[0] = (CurrentBranchRemotesDialog) findDialog(Tags.CONFIGURE_REMOTE_FOR_BRANCH);
assertNotNull(trackRemoteDialog);
flushAWT();
remoteBranches = trackRemoteDialog[0].getRemoteBranchItems();
assertNotNull(remoteBranches);
assertEquals(remote2, gitAccess.getRemoteFromCurrentBranch());
currentSelected = (RemoteBranchItem) remoteBranches.getSelectedItem();
assertEquals("remote2_name/main", currentSelected.toString());
} finally {
frame.setVisible(false);
frame.dispose();
}
}
Aggregations