Sistema desacoplado de pedidos online

Desafio para todos os níveis 🐣

Problema

Nesse desafio você é responsável por desenvolver uma nova solução flexível para um problema de pedidos online de um ecommerce. Para cada pedido, uma série de regras são aplicadas dependendo de características do próprio pedido. Uma implementação já existe na empresa mas ela inclui um código difícil de manter com vários if/else.

Requisitos

  •   O sistema possui as seguintes entidades:
  •           Produto: Categoria (string) e Value (int)
  •           Pagamento: Método de pagamento (string) e Value (int)
  •           Pedido: Produto, Pagamento e labels (array de strings)
  •   As regras a serem implementadas são:
  •           Se a compra for de um produto com valor superior a 1000 reais, adicionar uma label `frete-gratis` no pedido.
  •           Se o produto for da categoria `eletrodoméstico`, adicionar uma label `frágil` no pedido.
  •           Se o produto for da categoria `infantil`, adicionar uma label `presente` no pedido
  •           Se o método de pagamento for Boleto, dar um desconto de 10% porcento
  •   O código implementado precisa ser flexível para que novas regras possam ser adicionadas e removidas facilmente.
  •   Não é preciso implemantar API ou interface. Crie testes unitários para mostrar exemplos de uso do código.

O que você vai aprender

  •   orientação a objetos
  •   SOLID
  •   unit tests

Inspirado em desafios de empresas como

Plano Pro

Tenho acesso a todos os conteúdos privados com nosso plano Pro.

Modo Treino

Em dúvida em por onde começar a resolver esse desafio? No modo treino te ajudamos com um passo a passo para você criar sua própria solução.