blob: ac963c4855cedcc1db44cfde2cf9489f9f38af77 [file] [log] [blame]
/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.listeners;
import org.assertj.core.util.Lists;
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.mockito.internal.creation.settings.CreationSettings;
import org.mockito.invocation.Invocation;
import org.mockito.stubbing.Stubbing;
import org.mockitoutil.TestBase;
import java.util.Collection;
import java.util.List;
import static org.assertj.core.util.Lists.emptyList;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.internal.listeners.StubbingLookupNotifier.notifyStubbedAnswerLookup;
public class StubbingLookupNotifierTest extends TestBase {
Invocation invocation = mock(Invocation.class);
Stubbing stubbingFound = mock(Stubbing.class);
Collection<Stubbing> allStubbings = mock(Collection.class);
CreationSettings creationSettings = mock(CreationSettings.class);
@Test
public void does_not_do_anything_when_list_is_empty() {
// given
doReturn(emptyList()).when(creationSettings).getStubbingLookupListeners();
// when
notifyStubbedAnswerLookup(invocation, stubbingFound, allStubbings, creationSettings);
// then expect nothing to happen
}
@Test
public void call_on_stubbing_lookup_method_of_listeners_with_correct_event() {
// given
StubbingLookupListener listener1 = mock(StubbingLookupListener.class);
StubbingLookupListener listener2 = mock(StubbingLookupListener.class);
List<StubbingLookupListener> listeners = Lists.newArrayList(listener1, listener2);
doReturn(listeners).when(creationSettings).getStubbingLookupListeners();
// when
notifyStubbedAnswerLookup(invocation, stubbingFound, allStubbings, creationSettings);
// then
verify(listener1).onStubbingLookup(argThat(new EventArgumentMatcher()));
verify(listener2).onStubbingLookup(argThat(new EventArgumentMatcher()));
}
class EventArgumentMatcher implements ArgumentMatcher<StubbingLookupNotifier.Event> {
@Override
public boolean matches(StubbingLookupNotifier.Event argument) {
return invocation == argument.getInvocation() &&
stubbingFound == argument.getStubbingFound() &&
allStubbings == argument.getAllStubbings() &&
creationSettings == argument.getMockSettings();
}
}
}