/* * Copyright (c) 2012 - 2016 Jadler contributors * This program is made available under the terms of the MIT License. */ package net.jadler.mocking; import java.util.Arrays; import java.util.Collection; import net.jadler.Request; import net.jadler.RequestManager; import org.hamcrest.Matcher; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.Mock; import org.junit.Before; import org.hamcrest.core.IsEqual; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.anyCollection; import static org.mockito.Mockito.any; import static org.mockito.Mockito.eq; import static org.junit.Assert.fail; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.doNothing; @RunWith(MockitoJUnitRunner.class) public class VerifyingTest { @Mock public RequestManager requestManager; @Before @SuppressWarnings("unchecked") public void setUp() { doThrow(new VerificationException("")) .when(this.requestManager).evaluateVerification(anyCollection(), any(Matcher.class)); } @Test(expected=IllegalArgumentException.class) public void constructorIllegalArg() { new Verifying(null); fail("requestManager cannot be null"); } @Test public void constructor() { new Verifying(mock(RequestManager.class)); } @Test(expected=IllegalArgumentException.class) public void receivedTimesMatcherIllegalArg() { new Verifying(requestManager).receivedTimes(null); } @Test @SuppressWarnings("unchecked") public void receivedTimesMatcher_positive() { final Matcher<Request> m1 = mock(Matcher.class); final Matcher<Request> m2 = mock(Matcher.class); final Verifying v = new Verifying(requestManager).that(m1).that(m2); final Matcher<Integer> pred = mock(Matcher.class); final Collection<Matcher<? super Request>> matchers = Arrays.<Matcher<? super Request>>asList(m1, m2); doNothing().when(this.requestManager).evaluateVerification(eq(matchers), eq(pred)); v.receivedTimes(pred); } @Test(expected=VerificationException.class) @SuppressWarnings("unchecked") public void receivedTimesMatcher_negative() { new Verifying(requestManager).receivedTimes(mock(Matcher.class)); } @Test(expected=IllegalArgumentException.class) public void receivedTimesIntInvalidArg() { new Verifying(requestManager).receivedTimes(-1); } @Test @SuppressWarnings("unchecked") public void receivedTimesInt() { final Matcher<Request> m1 = mock(Matcher.class); final Matcher<Request> m2 = mock(Matcher.class); final Collection<Matcher<? super Request>> matchers = Arrays.<Matcher<? super Request>>asList(m1, m2); final Verifying v = new Verifying(requestManager).that(m1).that(m2); doNothing().when(this.requestManager).evaluateVerification(eq(matchers), any(IsEqual.class)); v.receivedTimes(42); } @Test(expected=VerificationException.class) public void receivedTimesInt_negative() { new Verifying(requestManager).receivedTimes(42); } @Test @SuppressWarnings("unchecked") public void receivedOnce() { final Matcher<Request> m1 = mock(Matcher.class); final Matcher<Request> m2 = mock(Matcher.class); final Collection<Matcher<? super Request>> matchers = Arrays.<Matcher<? super Request>>asList(m1, m2); final Verifying v = new Verifying(requestManager).that(m1).that(m2); doNothing().when(this.requestManager).evaluateVerification(eq(matchers), any(IsEqual.class)); v.receivedOnce(); } @Test(expected=VerificationException.class) public void receivedOnce_negative() { new Verifying(requestManager).receivedOnce(); } @Test @SuppressWarnings("unchecked") public void receivedNever() { final Matcher<Request> m1 = mock(Matcher.class); final Matcher<Request> m2 = mock(Matcher.class); final Collection<Matcher<? super Request>> matchers = Arrays.<Matcher<? super Request>>asList(m1, m2); final Verifying v = new Verifying(requestManager).that(m1).that(m2); doNothing().when(this.requestManager).evaluateVerification(eq(matchers), any(IsEqual.class)); v.receivedNever(); } @Test(expected=VerificationException.class) public void receivedNever_negative() { new Verifying(requestManager).receivedNever(); } }