package productcatalog.pages; import com.neovisionaries.i18n.CountryCode; import common.contexts.UserContext; import common.pages.DetailData; import common.pages.ReverseRouter; import common.pages.SelectableData; import io.sphere.sdk.products.ProductProjection; import io.sphere.sdk.products.ProductVariant; import org.junit.Test; import javax.money.Monetary; import java.util.List; import static io.sphere.sdk.json.SphereJsonUtils.readObjectFromResource; import static java.util.Collections.singletonList; import static java.util.Locale.GERMAN; import static java.util.stream.Collectors.toList; import static org.assertj.core.api.Assertions.assertThat; public class ProductDataFactoryTest { public static final UserContext USER_CONTEXT = UserContext.of(CountryCode.DE, singletonList(GERMAN), null, Monetary.getCurrency("EUR")); @Test public void create() { final ProductProjection product = readObjectFromResource("product.json", ProductProjection.typeReference()); final ProductVariant variant = product.getMasterVariant(); final ProductData productData = ProductDataFactory.of(USER_CONTEXT, reverseRouter()).create(product, variant); final List<String> colors = productData.getColors().stream().map(SelectableData::getText).collect(toList()); final List<String> sizes = productData.getSizes().stream().map(SelectableData::getText).collect(toList()); final List<String> details = productData.getDetails().stream().map(DetailData::getText).collect(toList()); assertThat(productData.getText()).isEqualTo("Freizeitjacke Save the Duck oliv"); assertThat(productData.getSku()).isEqualTo("M0E20000000DSB9"); assertThat(productData.getUrl()).isEqualTo("savetheduck-freizeitjacke-3065-oliv-url-M0E20000000DSB9"); assertThat(productData.getDescription()).isEqualTo("german test description"); assertThat(productData.getPrice()).isEqualTo("EUR 100,-"); assertThat(productData.getPriceOld()).isEqualTo("EUR 129,-"); assertThat(colors).containsExactly("oliv"); assertThat(sizes).containsExactly("XXS", "XS", "S", "M", "L", "XL", "XXL", "XXXL"); assertThat(details).containsExactly("detail de 2", "detail de 1"); } private ReverseRouter reverseRouter() { return new DefaultTestReverseRouter(); } }