Problema 2: Consultar produtos (findAll)

Implemente os testes de API usando RestAssured para consultar produtos (método GET do ProductController), considerando os seguintes cenários.

  1. Busca paginada exibe listagem paginada quando campo nome não preenchido e checa se os produtos Macbook Pro e PC Gamer Tera estão contidos

    @Test
    public void findAllShouldReturnAllProductsWhenNameIsEmpty() {

        given()
                .get("/products?page=0")
                .then()
                .statusCode(200)
                .assertThat().body("content.name", hasItems("Macbook Pro", "PC Gamer Tera"));
    }
  1. Busca paginada filtra produtos por nome e exibe listagem paginada quando campo nome preenchidos

    @Test
    public void findAllShouldReturnPagedWhenNameIsFilled() {

        given()
        .get("/products?page=0&pageSize=10&name={name}", "Macbook Pro")
                .then()
                .statusCode(200)
                .assertThat().body("content.id[0]", is(3))
                .assertThat().body("content.name[0]", equalTo("Macbook Pro"))
                .assertThat().body("content.price[0]", is(1250.0F));

    }
  1. Busca paginada filtra produtos de forma paginada e filtra produtos com preço maior que 2000.0

    @Test
    public void findAllShouldReturnPagedWhenProductPriceGreaterThan2000() {

        given()
                //usamos tamanho 25 para obter todos os produtos
                .get("/products?size=25")
                .then()
                .statusCode(200)
                //chamamos a lista de content (do postman), procurando todos os produtos
                //que possuem preço maior que 2000 e pegamos somente o name deles
                .body("content.findAll { it.price > 2000}.name", hasItems("Smart TV", "PC Gamer Weed"));
    }

Atualizado