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.