package in.mvpstarter.sample.common;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import in.mvpstarter.sample.data.model.NamedResource;
import in.mvpstarter.sample.data.model.Pokemon;
import in.mvpstarter.sample.data.model.Sprites;
import in.mvpstarter.sample.data.model.Statistic;
/**
* Factory class that makes instances of data models with random field values.
* The aim of this class is to help setting up test fixtures.
*/
public class TestDataFactory {
private static final Random sRandom = new Random();
public static String randomUuid() {
return UUID.randomUUID().toString();
}
public static Pokemon makePokemon(String id) {
Pokemon pokemon = new Pokemon();
pokemon.id = id;
pokemon.name = randomUuid() + id;
pokemon.stats = makeStatisticList(3);
pokemon.sprites = makeSprites();
return pokemon;
}
public static List<Pokemon> makePokemonList(int count) {
List<Pokemon> pokemonList = new ArrayList<>();
for (int i = 0; i < count; i++) {
pokemonList.add(makePokemon(String.valueOf(i)));
}
return pokemonList;
}
public static List<String> makePokemonNameList(List<NamedResource> pokemonList) {
List<String> names = new ArrayList<>();
for (NamedResource pokemon : pokemonList) {
names.add(pokemon.name);
}
return names;
}
public static Statistic makeStatistic() {
Statistic statistic = new Statistic();
statistic.baseStat = sRandom.nextInt();
statistic.stat = makeNamedResource(randomUuid());
return statistic;
}
public static List<Statistic> makeStatisticList(int count) {
List<Statistic> statisticList = new ArrayList<>();
for (int i = 0; i < count; i++) {
statisticList.add(makeStatistic());
}
return statisticList;
}
public static Sprites makeSprites() {
Sprites sprites = new Sprites();
sprites.frontDefault = randomUuid();
return sprites;
}
public static NamedResource makeNamedResource(String unique) {
NamedResource namedResource = new NamedResource();
namedResource.name = randomUuid() + unique;
namedResource.url = randomUuid();
return namedResource;
}
public static List<NamedResource> makeNamedResourceList(int count) {
List<NamedResource> namedResourceList = new ArrayList<>();
for (int i = 0; i < count; i++) {
namedResourceList.add(makeNamedResource(String.valueOf(i)));
}
return namedResourceList;
}
}