go-test

command module
v0.0.0-...-d5fc5a7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2023 License: MIT Imports: 3 Imported by: 0

README

Teste de seleção para vaga de Java

Faça um fork desse projeto e siga as instruções a seguir utilizando esse projeto.

Pré-requisitos

Implementar apenas a API (Backend) Versão Java +8 (caso seja Java 8, verificar compatibilidade da sua IDE) Versão Spring Boot >= 2.4 Banco de dados fica a seu critério (Sql, NoSql) Seu projeto deve obrigatoriamente ter as anotações: @Repository, @Entity e @Controller Documentação mínima da API (Swagger ou documento PDF)

Objetivo

Implementar para empresa de transporte de cargas SigaBem o endpoint para o cálculo do preço do frete:

Você deve calcular o valor total do frete e a data prevista da entrega.

Considerar regras para calcular o valor do frete:

  • CEPs com DDDs iguais tem 50% de desconto no valor do frete e entrega prevista de 1 dia
  • CEPs de estados iguais tem 75% de desconto no valor do frete e entrega prevista de 3 dias
  • CEPs de estados diferentes não deve ser aplicado o desconto no valor do frete e entrega prevista de 10 dias
  • O valor do frete é cobrado pelo peso da encomenda, o valor para cada KG é R$1,00

Seu input de entrada deve ser “peso”, “cepOrigem”, “cepDestino” e “nomeDestinatario“

Você utilizará a API gratuita de consulta de CEP abaixo: Documentação da API: https://viacep.com.br/ Exemplo do GET: https://viacep.com.br/ws/<CEP_A_CONSULTAR>/json/

Endpoint pode ser público Response/Output deve possuir: “vlTotalFrete” e “dataPrevistaEntrega”, “cepOrigem” e “cepDestino” Deve ser persistido no banco os valores da cotação os valores consultados: “peso”, “cepOrigem”, “cepDestino”, “nomeDestinatario”, “vlTotalFrete”, “dataPrevistaEntrega” e “dataConsulta”

Critérios de avaliação:

  • Implementação das regras de negócios para o cálculo do frete
  • Boas práticas de programação, arquitetura e padrões de projetos

Entrega:

A Proposta inicial era fazer em Java, contudo repliquei o teste para Go para práticar.

Tecnologias

  • Language: Go Lang
  • Banco de dados: PostgreSQL-dev/prod

Iniciar Aplicação

1. Selecione o diretório abra o prompt de sua preferência, e insira;

git clone https://github.com/AL33H/go-test.git

2. Após Clonar o diretório, deverá conectar um banco de dados localmente;

  • Com docker instalado, execute o docker docker-compose -up para instânciar um novo banco de dados localmente.

3. Para executar o programa, deverá executar o comando go run main.go

4. Para testar via postman, basta importar o arquivo.

{

	"info": {
		"_postman_id": "f4860117-4f6b-4121-9ba0-c0d984d84c05",
		"name": "API-GO-TEST",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "New",
			"request": {
				"method": "POST",
				"header": [],
				"body": {
					"mode": "raw",
					"raw": "{\r\n            \"nome\":\"Aleff R\",\r\n\t\t\t\"cepOrigem\":\"71699-310\",\r\n\t\t\t\"cepDestino\":\"71699-310\",\r\n\t\t\t\"peso\": 32.53\r\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "localhost:8080/consultar/new",
					"host": [
						"localhost"
					],
					"port": "8080",
					"path": [
						"consultar",
						"new"
					],
					"query": [
						{
							"key": null,
							"value": "1",
							"disabled": true
						}
					]
				}
			},
			"response": []
		},
		{
			"name": "FindAll",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "localhost:8080/consultar/",
					"host": [
						"localhost"
					],
					"port": "8080",
					"path": [
						"consultar",
						""
					]
				}
			},
			"response": []
		},
		{
			"name": "FindById",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "localhost:8080/consultar/1",
					"host": [
						"localhost"
					],
					"port": "8080",
					"path": [
						"consultar",
						"1"
					]
				}
			},
			"response": []
		},
		{
			"name": "deleteById",
			"request": {
				"method": "DELETE",
				"header": [],
				"url": {
					"raw": "localhost:8080/consultar/delete/1",
					"host": [
						"localhost"
					],
					"port": "8080",
					"path": [
						"consultar",
						"delete",
						"1"
					]
				}
			},
			"response": []
		}
	]
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL