package com.flextrade.jfixture.specifications;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
public class TestAnySpecificationCompositePropertySpecification {
private AnySatisfiedCompositePropertySpecification compositeSpecification;
private Object request;
@Mock
private Specification mockSpec1;
@Mock
private Specification mockSpec2;
@Before
public void initialise() {
MockitoAnnotations.initMocks(this);
this.request = new Object();
ArrayList<Specification> specifications = new ArrayList<Specification>();
specifications.add(this.mockSpec1);
specifications.add(this.mockSpec2);
this.compositeSpecification = new AnySatisfiedCompositePropertySpecification(specifications);
}
@Test(expected = IllegalArgumentException.class)
public void null_specification_collection_throws_exception() {
new AnySatisfiedCompositePropertySpecification((Iterable<Specification>)null);
}
@Test
public void returns_true_if_any_specifications_are_satisfied() {
when(mockSpec1.isSatisfiedBy(this.request)).thenReturn(true);
when(mockSpec2.isSatisfiedBy(this.request)).thenReturn(false);
boolean isSatisfied = this.compositeSpecification.isSatisfiedBy(this.request);
assertTrue(isSatisfied);
}
@Test
public void returns_false_if_no_specifications_are_satisfied() {
when(mockSpec1.isSatisfiedBy(this.request)).thenReturn(false);
when(mockSpec2.isSatisfiedBy(this.request)).thenReturn(false);
boolean isSatisfied = this.compositeSpecification.isSatisfiedBy(this.request);
assertFalse(isSatisfied);
}
}