diff --git a/.travis.yml b/.travis.yml index b72cbd9..bee701d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,3 +6,4 @@ branches: - master after_success: - bash <(curl -s https://codecov.io/bash) +dist: trusty diff --git a/README.md b/README.md index 9516af6..64afd54 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,13 @@ Note that if this fixture is generated more times than there are available state add("cnpj", cnpj()); // this will generate an unformatted CNPJ e.g. 11111111111111 add("cnpj", cnpj(true)); this will generate a formatted CNPJ e.g. 11.111.111/1111-11 }}); + +### CPF + + Fixture.of(User.class).addTemplate("valid", new Rule() {{ + add("cpf", cpf()); // this will generate an unformatted CPF e.g. 11111111111 + add("cpf", cpf(true)); this will generate a formatted CNPJ e.g. 111.111.111-11 + }}); You can see more utilization on [tests](https://github.com/six2six/fixture-factory/tree/master/src/test/java/br/com/six2six/fixturefactory)! diff --git a/src/main/java/br/com/six2six/fixturefactory/Rule.java b/src/main/java/br/com/six2six/fixturefactory/Rule.java index f46a5b7..803148b 100755 --- a/src/main/java/br/com/six2six/fixturefactory/Rule.java +++ b/src/main/java/br/com/six2six/fixturefactory/Rule.java @@ -1,208 +1,197 @@ -package br.com.six2six.fixturefactory; - -import static br.com.six2six.fixturefactory.function.impl.DateTimeFunction.DateType.AFTER; -import static br.com.six2six.fixturefactory.function.impl.DateTimeFunction.DateType.BEFORE; -import static br.com.six2six.fixturefactory.function.impl.NameFunction.NameType.FIRST; -import static br.com.six2six.fixturefactory.function.impl.NameFunction.NameType.LAST; -import static br.com.six2six.fixturefactory.util.DateTimeUtils.toCalendar; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; - -import br.com.six2six.bfgex.Gender; -import br.com.six2six.fixturefactory.base.CalendarInterval; -import br.com.six2six.fixturefactory.base.CalendarSequence; -import br.com.six2six.fixturefactory.base.Interval; -import br.com.six2six.fixturefactory.base.Range; -import br.com.six2six.fixturefactory.base.Sequence; -import br.com.six2six.fixturefactory.function.AssociationFunction; -import br.com.six2six.fixturefactory.function.Chainable; -import br.com.six2six.fixturefactory.function.DateFunction; -import br.com.six2six.fixturefactory.function.FixtureFunction; -import br.com.six2six.fixturefactory.function.Function; -import br.com.six2six.fixturefactory.function.impl.AssociationFunctionImpl; -import br.com.six2six.fixturefactory.function.impl.ChronicFunction; -import br.com.six2six.fixturefactory.function.impl.CnpjFunction; -import br.com.six2six.fixturefactory.function.impl.DateTimeFunction; -import br.com.six2six.fixturefactory.function.impl.IdentityFunction; -import br.com.six2six.fixturefactory.function.impl.NameFunction; -import br.com.six2six.fixturefactory.function.impl.NumberSequence; -import br.com.six2six.fixturefactory.function.impl.RandomFunction; -import br.com.six2six.fixturefactory.function.impl.RegexFunction; -import br.com.six2six.fixturefactory.function.impl.SequenceFunction; -import br.com.six2six.fixturefactory.function.impl.UniqueRandomFunction; -import br.com.six2six.fixturefactory.util.ReflectionUtils; - -import com.mdimension.jchronic.Options; - -public class Rule { - - public Rule() {} - - public Rule(Rule baseRule, Rule extendedRule) { - properties = new LinkedHashSet(baseRule.getProperties()); - for(Property property : extendedRule.getProperties()) { - properties.remove(property); - properties.add(property); - } - } - - private Set properties = new LinkedHashSet(); - - public void add(String property, Object value) { - this.properties.add(new Property(property, value)); - } - - public void add(String property, Function function) { - if (function == null) { - function = new IdentityFunction(null); - } - this.properties.add(new Property(property, function)); - } - - /** - * @deprecated use {@link one(clazz, label)} instead. - */ - @Deprecated - public Function fixture(Class clazz, String label) { - return new FixtureFunction(clazz, label); - } - - /** - * @deprecated use {@link has(quantity).of(clazz, label)} instead. - */ - @Deprecated - public Function fixture(Class clazz, Integer quantity, String label) { - return new FixtureFunction(clazz, label, quantity); - } - - public Chainable has(int quantity) { - return new AssociationFunctionImpl(quantity); - } - - public AssociationFunction one(Class clazz, String label) { - return new AssociationFunctionImpl(clazz, label); - } - - public Function random(Class clazz, Object... dataset) { - return new RandomFunction(clazz, dataset); - } - - public Function random(Class clazz, MathContext mc) { - return new RandomFunction(clazz, mc); - } - - public Function random(Object... dataset) { - return new RandomFunction(dataset); - } - - public Function random(Class clazz, Range range) { - return new RandomFunction(clazz, range); - } - - public Function uniqueRandom(int minValue, int maxValue) { - return new UniqueRandomFunction(minValue, maxValue); - } - - public Function uniqueRandom(Object... dataset) { - return new UniqueRandomFunction(dataset); - } - - public Function uniqueRandom(Class> clazz) { - return new UniqueRandomFunction(clazz); - } - - public Function name() { - return new NameFunction(); - } - - public Function name(Gender gender) { - return new NameFunction(gender); - } - - public Function firstName() { - return new NameFunction(FIRST); - } - - public Function firstName(Gender gender) { - return new NameFunction(FIRST, gender); - } - - public Function lastName() { - return new NameFunction(LAST); - } - - public Function beforeDate(String source, SimpleDateFormat format) { - return new DateTimeFunction(toCalendar(source, format), BEFORE); - } - - public Function afterDate(String source, SimpleDateFormat format) { - return new DateTimeFunction(toCalendar(source, format), AFTER); - } - - public Function randomDate(String startDate, String endDate, DateFormat format) { - return new DateTimeFunction(toCalendar(startDate, format), toCalendar(endDate, format)); - } - - public Function regex(String regex) { - return new RegexFunction(regex); - } - - public Range range(Number start, Number end) { - return new Range(start, end); - } - - public Function sequence(Sequence sequence) { - return new SequenceFunction(sequence); - } - - public Function sequence(Number startWith, int incrementBy) { - return new SequenceFunction(new NumberSequence(startWith, incrementBy)); - } - - public Function sequence(Class clazz) { - Number number = ReflectionUtils.newInstance(clazz, Arrays.asList("1")); - return new SequenceFunction(new NumberSequence(number, 1)); - } - - public Function sequenceDate(String base, CalendarInterval interval) { - return this.sequenceDate(base, new SimpleDateFormat("yyyy-MM-dd"), interval); - } - - public Function sequenceDate(String base, DateFormat simpleDateFormat, CalendarInterval interval) { - return new SequenceFunction(new CalendarSequence(toCalendar(base, simpleDateFormat), interval)); - } - - public DateFunction instant(String dateText) { - return new ChronicFunction(dateText); - } - - public Function instant(String dateText, Options options) { - return new ChronicFunction(dateText, options); - } - - public Function cnpj() { - return new CnpjFunction(); - } - - public Function cnpj(boolean formatted) { - return new CnpjFunction(formatted); - } - - public Interval increment(int interval) { - return new Interval(interval); - } - - public Interval decrement(int interval) { - return new Interval(interval*(-1)); - } - - public Set getProperties() { - return properties; - } -} +package br.com.six2six.fixturefactory; + +import br.com.six2six.bfgex.Gender; +import br.com.six2six.fixturefactory.base.*; +import br.com.six2six.fixturefactory.function.*; +import br.com.six2six.fixturefactory.function.impl.*; +import br.com.six2six.fixturefactory.util.ReflectionUtils; +import com.mdimension.jchronic.Options; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; + +import static br.com.six2six.fixturefactory.function.impl.DateTimeFunction.DateType.AFTER; +import static br.com.six2six.fixturefactory.function.impl.DateTimeFunction.DateType.BEFORE; +import static br.com.six2six.fixturefactory.function.impl.NameFunction.NameType.FIRST; +import static br.com.six2six.fixturefactory.function.impl.NameFunction.NameType.LAST; +import static br.com.six2six.fixturefactory.util.DateTimeUtils.toCalendar; + +public class Rule { + + public Rule() {} + + public Rule(Rule baseRule, Rule extendedRule) { + properties = new LinkedHashSet(baseRule.getProperties()); + for(Property property : extendedRule.getProperties()) { + properties.remove(property); + properties.add(property); + } + } + + private Set properties = new LinkedHashSet(); + + public void add(String property, Object value) { + this.properties.add(new Property(property, value)); + } + + public void add(String property, Function function) { + if (function == null) { + function = new IdentityFunction(null); + } + this.properties.add(new Property(property, function)); + } + + /** + * @deprecated use {@link one(clazz, label)} instead. + */ + @Deprecated + public Function fixture(Class clazz, String label) { + return new FixtureFunction(clazz, label); + } + + /** + * @deprecated use {@link has(quantity).of(clazz, label)} instead. + */ + @Deprecated + public Function fixture(Class clazz, Integer quantity, String label) { + return new FixtureFunction(clazz, label, quantity); + } + + public Chainable has(int quantity) { + return new AssociationFunctionImpl(quantity); + } + + public AssociationFunction one(Class clazz, String label) { + return new AssociationFunctionImpl(clazz, label); + } + + public Function random(Class clazz, Object... dataset) { + return new RandomFunction(clazz, dataset); + } + + public Function random(Class clazz, MathContext mc) { + return new RandomFunction(clazz, mc); + } + + public Function random(Object... dataset) { + return new RandomFunction(dataset); + } + + public Function random(Class clazz, Range range) { + return new RandomFunction(clazz, range); + } + + public Function uniqueRandom(int minValue, int maxValue) { + return new UniqueRandomFunction(minValue, maxValue); + } + + public Function uniqueRandom(Object... dataset) { + return new UniqueRandomFunction(dataset); + } + + public Function uniqueRandom(Class> clazz) { + return new UniqueRandomFunction(clazz); + } + + public Function name() { + return new NameFunction(); + } + + public Function name(Gender gender) { + return new NameFunction(gender); + } + + public Function firstName() { + return new NameFunction(FIRST); + } + + public Function firstName(Gender gender) { + return new NameFunction(FIRST, gender); + } + + public Function lastName() { + return new NameFunction(LAST); + } + + public Function beforeDate(String source, SimpleDateFormat format) { + return new DateTimeFunction(toCalendar(source, format), BEFORE); + } + + public Function afterDate(String source, SimpleDateFormat format) { + return new DateTimeFunction(toCalendar(source, format), AFTER); + } + + public Function randomDate(String startDate, String endDate, DateFormat format) { + return new DateTimeFunction(toCalendar(startDate, format), toCalendar(endDate, format)); + } + + public Function regex(String regex) { + return new RegexFunction(regex); + } + + public Range range(Number start, Number end) { + return new Range(start, end); + } + + public Function sequence(Sequence sequence) { + return new SequenceFunction(sequence); + } + + public Function sequence(Number startWith, int incrementBy) { + return new SequenceFunction(new NumberSequence(startWith, incrementBy)); + } + + public Function sequence(Class clazz) { + Number number = ReflectionUtils.newInstance(clazz, Arrays.asList("1")); + return new SequenceFunction(new NumberSequence(number, 1)); + } + + public Function sequenceDate(String base, CalendarInterval interval) { + return this.sequenceDate(base, new SimpleDateFormat("yyyy-MM-dd"), interval); + } + + public Function sequenceDate(String base, DateFormat simpleDateFormat, CalendarInterval interval) { + return new SequenceFunction(new CalendarSequence(toCalendar(base, simpleDateFormat), interval)); + } + + public DateFunction instant(String dateText) { + return new ChronicFunction(dateText); + } + + public Function instant(String dateText, Options options) { + return new ChronicFunction(dateText, options); + } + + public Function cnpj() { + return new CnpjFunction(); + } + + public Function cnpj(boolean formatted) { + return new CnpjFunction(formatted); + } + + public Function cpf() { + return new CpfFunction(); + } + + public Function cpf(boolean formatted) { + return new CpfFunction(formatted); + } + + public Interval increment(int interval) { + return new Interval(interval); + } + + public Interval decrement(int interval) { + return new Interval(interval*(-1)); + } + + public Set getProperties() { + return properties; + } +} diff --git a/src/main/java/br/com/six2six/fixturefactory/transformer/SetTransformer.java b/src/main/java/br/com/six2six/fixturefactory/transformer/SetTransformer.java index f159a83..b0207c2 100644 --- a/src/main/java/br/com/six2six/fixturefactory/transformer/SetTransformer.java +++ b/src/main/java/br/com/six2six/fixturefactory/transformer/SetTransformer.java @@ -44,7 +44,7 @@ private T transformToInterfaceTarget(Object value, Class type) { @SuppressWarnings({ "rawtypes", "unchecked" }) private T transformToConcreteTarget(Object value, Class type) { if (EnumSet.class.isAssignableFrom(type)) { - return type.cast(EnumSet.copyOf((Collection) value)); + return (T) EnumSet.copyOf((Collection) value); } else { return ReflectionUtils.newInstance(type, Arrays.asList((Collection) value)); }