package com.thoughtworks.gauge.findUsages;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import com.thoughtworks.gauge.findUsages.helper.ReferenceSearchHelper;
import com.thoughtworks.gauge.language.psi.impl.SpecStepImpl;
import org.junit.Test;
import static org.mockito.Mockito.*;
public class ReferenceSearchTest extends LightCodeInsightFixtureTestCase {
private Project project;
private SpecStepImpl element;
private ReferenceSearchHelper helper;
private StepCollector collector;
@Override
public void setUp() throws Exception {
super.setUp();
element = mock(SpecStepImpl.class);
helper = mock(ReferenceSearchHelper.class);
collector = mock(StepCollector.class);
project = myFixture.getProject();
}
@Test
public void testShouldNotFindReferencesOfNonGaugeElement() throws Exception {
ReferencesSearch.SearchParameters searchParameters = new ReferencesSearch.SearchParameters(element, GlobalSearchScope.allScope(project), true);
when(helper.shouldFindReferences(searchParameters, searchParameters.getElementToSearch())).thenReturn(false);
new ReferenceSearch(helper).processQuery(searchParameters, psiReference -> false);
verify(helper, never()).getPsiElements(any(StepCollector.class), any(PsiElement.class));
}
@Test
public void testShouldFindReferencesOfGaugeElement() throws Exception {
ReferencesSearch.SearchParameters searchParameters = new ReferencesSearch.SearchParameters(element, GlobalSearchScope.allScope(project), true);
when(helper.shouldFindReferences(searchParameters, searchParameters.getElementToSearch())).thenReturn(true);
when(helper.getStepCollector(element)).thenReturn(collector);
new ReferenceSearch(helper).processQuery(searchParameters, psiReference -> false);
verify(helper, times(1)).getPsiElements(collector, element);
}
}