Giter VIP home page Giter VIP logo

go-test's Introduction

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": []
		}
	]
}

go-test's People

Contributors

al33h avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.