Nesse projeto foi desenvolvido um carrinho de compras totalmente dinâmico, no qual foi utilizada a API do Mercado Livre para buscar produtos à venda e o framework Jest para desenvolver os testes e manter a qualidade do aplicativo.
Para visualizar o Carinho de Compras rodando acesse esse link:
https://karolineks.github.io/Carrinho_de_compras/
Javascript, HTML, CSS, Jest e NPM
O manual da API do Mercado Livre contém todas as informações acerca da API (retorno, estrutura). Nesse projeto foi utilizado apenas alguns dos endpoints, sendo eles:
-
https://api.mercadolibre.com/sites/MLB/search?q=$QUERY
: traz uma lista de produtos, onde$QUERY
é o termo a ser buscado. Por exemplo, se o termo forcomputador
, o retorno será parecido com esse:Retorno da requisição de listagem de produtos
Esse retorno possui várias informações acerca da lista de produtos. Dentro do array
results
é onde se encontra a lista de produtos.{ "site_id": "MLB", "query": "computador", "paging": { "total": 406861, "offset": 0, "limit": 50, "primary_results": 1001 }, "results": [ { "id": "MLB1341925291", "site_id": "MLB", "title": "Processador Intel Core I5-9400f 6 Núcleos 128 Gb", "seller": { "id": 385471334, "permalink": null, "power_seller_status": null, "car_dealer": false, "real_estate_agency": false, "tags": [] }, "price": 899, "currency_id": "BRL", "available_quantity": 1, "sold_quantity": 0, "buying_mode": "buy_it_now", "listing_type_id": "gold_pro", "stop_time": "2039-10-10T04:00:00.000Z", "condition": "new", "permalink": "https://www.mercadolivre.com.br/processador-intel-core-i5-9400f-6-nucleos-128-gb/p/MLB13953199", "thumbnail": "http://mlb-s2-p.mlstatic.com/813265-MLA32241773956_092019-I.jpg", "accepts_mercadopago": true, "installments": { "quantity": 12, "amount": 74.92, "rate": 0, "currency_id": "BRL" }, "address": { "state_id": "BR-SP", "state_name": "São Paulo", "city_id": "BR-SP-27", "city_name": "São José dos Campos" }, "shipping": { "free_shipping": true, "mode": "me2", "tags": [ "fulfillment", "mandatory_free_shipping" ], "logistic_type": "fulfillment", "store_pick_up": false }, "seller_address": { "id": "", "comment": "", "address_line": "", "zip_code": "", "country": { "id": "BR", "name": "Brasil" }, "state": { "id": "BR-SP", "name": "São Paulo" }, "city": { "id": "BR-SP-27", "name": "São José dos Campos" }, "latitude": "", "longitude": "" }, "attributes": [ { "source": 1, "id": "ALPHANUMERIC_MODEL", "value_id": "6382478", "value_struct": null, "values": [ { "name": "BX80684I59400F", "struct": null, "source": 1, "id": "6382478" } ], "attribute_group_id": "OTHERS", "name": "Modelo alfanumérico", "value_name": "BX80684I59400F", "attribute_group_name": "Outros" }, { "id": "BRAND", "value_struct": null, "attribute_group_name": "Outros", "attribute_group_id": "OTHERS", "source": 1, "name": "Marca", "value_id": "15617", "value_name": "Intel", "values": [ { "id": "15617", "name": "Intel", "struct": null, "source": 1 } ] }, { "name": "Condição do item", "value_id": "2230284", "attribute_group_id": "OTHERS", "attribute_group_name": "Outros", "source": 1, "id": "ITEM_CONDITION", "value_name": "Novo", "value_struct": null, "values": [ { "id": "2230284", "name": "Novo", "struct": null, "source": 1 } ] }, { "id": "LINE", "value_name": "Core i5", "attribute_group_id": "OTHERS", "attribute_group_name": "Outros", "name": "Linha", "value_id": "7769178", "value_struct": null, "values": [ { "id": "7769178", "name": "Core i5", "struct": null, "source": 1 } ], "source": 1 }, { "id": "MODEL", "value_struct": null, "values": [ { "id": "6637008", "name": "i5-9400F", "struct": null, "source": 1 } ], "attribute_group_id": "OTHERS", "name": "Modelo", "value_id": "6637008", "value_name": "i5-9400F", "attribute_group_name": "Outros", "source": 1 } ], "differential_pricing": { "id": 33580182 }, "original_price": null, "category_id": "MLB1693", "official_store_id": null, "catalog_product_id": "MLB13953199", "tags": [ "brand_verified", "good_quality_picture", "good_quality_thumbnail", "immediate_payment", "cart_eligible" ], "catalog_listing": true }, ] }
</details>
-
https://api.mercadolibre.com/items/$ItemID
: traz detalhes de um determinado produto, onde$ItemID
é oid
do produto a ser buscado. Por exemplo, se oid
do produto forMLB1341706310
, o retorno será parecido com esse:Retorno da requisição de detalhes de um produto
Esse retorno traz informações detalhadas sobre cada um dos produtos. Por exemplo, o
id
desse produto, otitle
, que o título do produto,price
, que é o preço e assim por diante.{ "id": "MLB1341706310", "site_id": "MLB", "title": "Processador Gamer Amd Ryzen 5 2600 Yd2600bbafbox De 6 Núcleos E 3.9ghz De Frequência", "subtitle": null, "seller_id": 245718870, "category_id": "MLB1693", "official_store_id": 1929, "price": 1068, "base_price": 1068, "original_price": null, "currency_id": "BRL", "initial_quantity": 93, "available_quantity": 0, "sold_quantity": 50, "sale_terms": [], "buying_mode": "buy_it_now", "listing_type_id": "gold_special", "start_time": "2019-10-15T18:13:00.000Z", "stop_time": "2040-01-27T00:26:51.000Z", "condition": "new", "permalink": "https://produto.mercadolivre.com.br/MLB-1341706310-processador-gamer-amd-ryzen-5-2600-yd2600bbafbox-de-6-nucleos-e-39ghz-de-frequncia-_JM", "thumbnail_id": "852106-MLA42157659481_062020", "thumbnail": "http://http2.mlstatic.com/D_852106-MLA42157659481_062020-I.jpg", "secure_thumbnail": "https://http2.mlstatic.com/D_852106-MLA42157659481_062020-I.jpg", "pictures": [], "video_id": null, "descriptions": [ ], "accepts_mercadopago": true, "non_mercado_pago_payment_methods": [ ], "shipping": {}, "international_delivery_mode": "none", "seller_address": {}, "seller_contact": null, "location": { }, "coverage_areas": [ ], "attributes": [], "warnings": [ ], "listing_source": "", "variations": [ ], "status": "paused", "sub_status": [], "tags": [], "warranty": "Garantia de fábrica: 3 anos", "catalog_product_id": "MLB9196241", "domain_id": "MLB-COMPUTER_PROCESSORS", "parent_item_id": null, "differential_pricing": null, "deal_ids": [ ], "automatic_relist": false, "date_created": "2019-10-15T18:13:00.000Z", "last_updated": "2022-02-05T06:46:48.434Z", "health": null, "catalog_listing": true, "channels": [] }
Para executar os testes, execute o comando abaixo:
npm test
Para executar e acompanhar a implementação da cobertura de testes, rode o comando abaixo:
npm run test:coverage
Estou aberta para feedbacks ou qualquer sugestão de melhoria