package component.annotations;
import com.flextrade.jfixture.FixtureAnnotations;
import com.flextrade.jfixture.JFixture;
import com.flextrade.jfixture.annotations.Fixture;
import org.junit.Test;
import testtypes.TypeWithProperties;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class TestFixtureAnnotation {
@Fixture
private TypeWithProperties privateFieldWithAnnotation;
@Fixture
public TypeWithProperties publicFieldWithAnnotation;
private TypeWithProperties fieldWithoutAnnotation;
@Fixture
private List<String> stringList;
@Test
public void initialises_auto_fixture_private_fields_automatically() {
FixtureAnnotations.initFixtures(this);
assertNotNull(privateFieldWithAnnotation);
}
@Test
public void initialises_generic_auto_fixture_fields_automatically() {
FixtureAnnotations.initFixtures(this);
assertNotNull(stringList);
assertNotEquals(0, stringList.size());
}
@Test
public void initialises_auto_fixture_public_fields_automatically() {
FixtureAnnotations.initFixtures(this);
assertNotNull(publicFieldWithAnnotation);
}
@Test
public void ignores_non_auto_fixture_fields() {
FixtureAnnotations.initFixtures(this);
assertNull(fieldWithoutAnnotation);
}
@Test
public void initialises_auto_fixture_fields_automatically_using_the_supplied_fixture() {
JFixture fixture = new JFixture();
fixture.customise().sameInstance(String.class, "string");
FixtureAnnotations.initFixtures(this, fixture);
assertEquals("string", privateFieldWithAnnotation.getSymbol());
}
}