/******************************************************************************* * Copyright (c) 2015 Tasktop Technologies 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: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.tasks.ui.wizards; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.mylyn.commons.workbench.WorkbenchUtil; import org.eclipse.mylyn.commons.workbench.forms.SectionComposite; import org.eclipse.mylyn.tasks.core.IRepositoryQuery; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.junit.Before; import org.junit.Test; public class AbstractRepositoryQueryPage2Test { private final class TestRepositoryQueryPage extends AbstractRepositoryQueryPage2 { private String suggestedTitle = ""; private TestRepositoryQueryPage(String pageName, TaskRepository repository, IRepositoryQuery query) { super(pageName, repository, query); } @Override protected String suggestQueryTitle() { return suggestedTitle; } @Override protected IWizardContainer getContainer() { return super.getContainer(); } @Override protected void createPageContent(SectionComposite parent) { } @Override protected void doRefreshControls() { } @Override protected boolean hasRepositoryConfiguration() { return false; } @Override protected boolean restoreState(IRepositoryQuery query) { return false; } @Override public void applyTo(IRepositoryQuery query) { } public void setSuggestedTitle(String suggestedTitle) { this.suggestedTitle = suggestedTitle; } } private TestRepositoryQueryPage page; private IRepositoryQuery savedQuery; @Before public void setUp() { TaskRepository repository = new TaskRepository("mock", "http://mock"); savedQuery = mock(IRepositoryQuery.class); page = new TestRepositoryQueryPage("page", repository, savedQuery); RepositoryQueryWizard wizard = new RepositoryQueryWizard(repository); WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard); wizard.setContainer(dialog); wizard.addPage(page); page.createControl(WorkbenchUtil.getShell()); dialog.create(); // simulate the user making a selection which sets the suggestion: page.setSuggestedTitle("suggested title"); } @Test public void suggestsTitleWhenTitleEmpty() { assertEquals("", page.getQueryTitle()); page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); } @Test public void doesNotSuggestTitleWhenTitleEdited() { page.setQueryTitle("test"); assertEquals("test", page.getQueryTitle()); page.getContainer().updateButtons(); assertEquals("test", page.getQueryTitle()); page.setQueryTitle("testing"); page.getContainer().updateButtons(); assertEquals("testing", page.getQueryTitle()); } @Test public void suggestsTitleWhenTitleCleared() { page.setQueryTitle("test"); page.getContainer().updateButtons(); assertEquals("test", page.getQueryTitle()); page.setQueryTitle(""); assertEquals("", page.getQueryTitle()); page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); } @Test public void suggestsTitleWhenSuggestionChanges() { page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertEquals("another suggested title", page.getQueryTitle()); } @Test public void suggestsTitleWhenSuggestionEmpty() { page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); page.setSuggestedTitle(""); assertEquals("suggested title", page.getQueryTitle()); page.getContainer().updateButtons(); assertEquals("", page.getQueryTitle()); } @Test public void doesNotSuggestTitleWhenEditedTitleEqualsSuggestion() { when(savedQuery.getSummary()).thenReturn("saved title"); page.setQueryTitle("suggested title"); page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); } @Test public void doesNotSuggestTitleWhenSavedTitleEqualsSuggestion() { when(savedQuery.getSummary()).thenReturn("suggested title"); page.setQueryTitle("edited title"); page.getContainer().updateButtons(); assertEquals("edited title", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertEquals("edited title", page.getQueryTitle()); } @Test public void doesNotSuggestTitleWhenEditedTitleEqualsSavedTitle() { when(savedQuery.getSummary()).thenReturn("saved title"); page.setQueryTitle("saved title"); page.getContainer().updateButtons(); assertEquals("saved title", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertEquals("saved title", page.getQueryTitle()); } @Test public void suggestsTitleWhenEditingQueryWithSuggestedTitle() { when(savedQuery.getSummary()).thenReturn("suggested title"); page.setQueryTitle("suggested title"); page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertEquals("another suggested title", page.getQueryTitle()); } @Test public void suggestTitleUpdatesCompletion() { page.getContainer().updateButtons(); assertEquals("suggested title", page.getQueryTitle()); assertTrue(page.isPageComplete()); page.setSuggestedTitle(""); page.getContainer().updateButtons(); assertFalse(page.isPageComplete()); assertEquals("", page.getQueryTitle()); page.getContainer().updateButtons(); assertFalse(page.isPageComplete()); assertEquals("", page.getQueryTitle()); page.setSuggestedTitle("another suggested title"); page.getContainer().updateButtons(); assertTrue(page.isPageComplete()); assertEquals("another suggested title", page.getQueryTitle()); } }