private static CategoryTree createAbcCategoryTree() {
final List<Category> rootCategories = Stream.of("A", "B", "C")
.map(id -> CategoryBuilder.of(id, en("name " + id), en("slug-" + id)).externalId("external-id-" + id).build())
.collect(toList());
final List<Category> secondLevelCategories = rootCategories.stream()
.flatMap(parent -> IntStream.range(1, 4)
.mapToObj(i -> {
final String id = parent.getId() + "-" + i;
return CategoryBuilder.of(id, en("name " + id), en("slug-" + id)).parent(parent).ancestors(singletonList(parent.toReference())).externalId("external-id-" + id).build();
}))
.collect(Collectors.toList());
final List<Category> thirdLevelCategories = secondLevelCategories.stream()
.flatMap(parent -> IntStream.range(1, 4)
.mapToObj(i -> {
final List<Reference<Category>> ancestors = new LinkedList<Reference<Category>>();
ancestors.addAll(parent.getAncestors());
ancestors.add(parent.toReference());
final String id = parent.getId() + "-" + i;
return CategoryBuilder.of(id, en("name " + id), en("slug-" + id)).parent(parent).ancestors(ancestors).externalId("external-id-" + id).build();
}))
.collect(Collectors.toList());
final List<Category> all = new LinkedList<>();
all.addAll(rootCategories);
all.addAll(secondLevelCategories);
all.addAll(thirdLevelCategories);
assertThat(all).hasSize(39);
return CategoryTree.of(all);
}
}