package component;
import com.flextrade.jfixture.JFixture;
import com.flextrade.jfixture.exceptions.ObjectCreationException;
import org.junit.Test;
import testtypes.TypeWithBooleanConvention;
import testtypes.TypeWithCircularReference;
import testtypes.TypeWithFields;
import testtypes.TypeWithFieldWithThrowingConstructor;
import testtypes.TypeWithProperties;
import testtypes.constructors.TypeWithConstructor;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
public class TestFixture {
@Test
public void type_with_constructor_resolves_smallest_constructor() {
JFixture fixture = new JFixture();
TypeWithConstructor type = fixture.create(TypeWithConstructor.class);
assertNotNull(type);
assertNotNull(type.getSymbol());
assertTrue(type.getSize() > 0);
}
@Test
public void type_with_fields_sets_all_fields() {
JFixture fixture = new JFixture();
TypeWithFields type = fixture.create(TypeWithFields.class);
assertNotNull(type);
assertNotNull(type.symbol);
assertTrue(type.size > 0);
}
@Test
public void type_with_properties_sets_all_properties() {
JFixture fixture = new JFixture();
TypeWithProperties type = fixture.create(TypeWithProperties.class);
assertNotNull(type);
assertNotNull(type.getSymbol());
assertTrue(type.getSize() > 0);
}
@Test
public void type_with_boolean_convention_resolves_the_boolean_correctly() {
JFixture fixture = new JFixture();
TypeWithBooleanConvention type = fixture.create(TypeWithBooleanConvention.class);
assertTrue(type.isEnabled());
}
@Test(expected = ObjectCreationException.class)
public void applies_throwing_recursion_behaviour_by_default() {
JFixture fixture = new JFixture();
fixture.create(TypeWithCircularReference.class);
}
@Test
public void array_of_type_containing_object_with_throwing_constructor_sets_fields_with_working_constructor() {
JFixture fixture = new JFixture();
TypeWithFieldWithThrowingConstructor[] types = fixture.create(TypeWithFieldWithThrowingConstructor[].class);
assertNotNull(types);
assertTrue(types.length > 0);
assertNotNull(types[0]);
assertNotNull(types[0].fieldWithThrowingConstructor);
}
}