    @Test
    public void apiProductsShouldReturnValidProducts() throws IOException {

        Call<ProductsResponse> call = api.products();

        ProductsResponse response = call.execute().body();
        assertTrue(response.isSuccess());

        List<Product> products = response.getProducts();
        assertNotNull(products);
        assertEquals(products.size(), 2);

        Product menJavaTShirt = products.get(0);
        assertEquals(menJavaTShirt.getId(), "MenJavaTShirt");
        assertEquals(menJavaTShirt.getName(), "Men's Java T-shirt");
        assertEquals(menJavaTShirt.getType(), ProductType.TShirt);

        List<ProductColor> colors = menJavaTShirt.getColors();
        assertEquals(colors.size(), 2);
        assertEquals(colors.get(1).getName(), "Navy");

        List<ProductSize> sizes = menJavaTShirt.getSizes();
        assertEquals(sizes.size(), 5);
        assertEquals(sizes.get(4).getId(), "xxl");
    }