Carrinho de compras


História

Precisamos de modelar um carrinho de compras para uma loja de bairro. O carrinho deve manter o registo da lista de artigos adicionados e calcular corretamente o preço.

Os artigos são adicionados ao carrinho através de códigos SKU (unidade de manutenção de stock). Os artigos da loja são:

Nome Preço SKU
Potatoes 10.00 STAPOT
Rice 30.00 STARIC
Coffee 14.99 STACOF
Newspaper 2.99 MEDNEW

Tarefas

O carrinho de compras deve permitir realizar estas operações:

  • Adicionar artigos ao carrinho: lê um SKU e adiciona-o ao carrinho.
  • Verificar o valor total: o valor total dos artigos no carrinho, expresso como um número com duas casas decimais (por exemplo, 3.99).
  • Verificar os artigos que estão no carrinho: uma lista com os nomes dos artigos no carrinho, por ordem alfabética, sem duplicados, separados por uma vírgula e um espaço.

Terminologia

  • Artigo: cada um dos produtos que podem ser adicionados ao carrinho de compras.
  • SKU: o SKU é um identificador composto pelas três primeiras letras maiúsculas do tipo de produto + as três primeiras letras maiúsculas do nome do produto.
  • Preço: o valor do artigo expresso como um número com duas casas decimais.

Implementações

Versão alternativa

Uma versão alternativa, ou extensão, da história usa cupões de desconto que podem ser adicionados ao carrinho de compras.

História

Para manter os clientes satisfeitos, a loja de bairro acrescentou cupões de desconto. Isto significa que, para suportar estes descontos, o nosso carrinho de compras tem de conseguir ler e aplicar cupões de desconto aos artigos que já lá estão. Os cupões suportados são:

Tipo SKU Regra
Desconto de preço fixo FIX_TEN Desconta 10.00 ao valor total do carrinho
Desconto de produto HALF_STAPOT Reduz todos os artigos STAPOT para metade do preço

Tarefas

O carrinho de compras deve ter uma nova operação scan coupon, que recebe um SKU e o adiciona ao carrinho. Tem em atenção que o total_amount não pode ser um número negativo; o valor mínimo do total_amount é 0.

Terminologia

  • Cupão: desconto que pode ser aplicado ao carrinho. Os cupões são únicos e só podem ser aplicados uma vez. Se o tipo de cupão for um desconto de preço fixo, a segunda parte do SKU é o valor do desconto em letras maiúsculas.

Implementações