Este projeto é uma API REST simples para gerenciar iniciativas de sustentabilidade, desenvolvido como exemplo educacional para o Bootcamp GitHub Copilot – Código na Prática, uma iniciativa da DIO em parceria com o GitHub.
A API permite gerenciar diferentes tipos de iniciativas sustentáveis, como:
- Programas de reciclagem
- Ações ecológicas
- Metas de redução de carbono
- Projetos de impacto ambiental
- Node.js - Ambiente de execução JavaScript
- Express - Framework web para Node.js
- Jest - Framework de testes
- Supertest - Biblioteca para testes de API HTTP
- Dados armazenados em memória (sem banco de dados)
- Node.js instalado (versão 14 ou superior)
- npm (gerenciador de pacotes do Node.js)
- Clone este repositório:
git clone https://github.com/pachicodes/workshop-teste-documentacao-dio.git- Entre na pasta do projeto:
cd workshop-teste-documentacao-dio- Instale as dependências:
npm installPara iniciar a API, execute:
npm startA API estará disponível em: http://localhost:3000
GET /api/initiatives
GET /api/initiatives/:id
POST /api/initiatives
Content-Type: application/json
{
"title": "Nome da Iniciativa",
"type": "recycling",
"description": "Descrição da iniciativa",
"carbonReduction": 300,
"status": "active"
}
PUT /api/initiatives/:id
Content-Type: application/json
{
"title": "Novo título",
"status": "completed"
}
DELETE /api/initiatives/:id
workshop-teste-documentacao-dio/
├── src/
│ ├── app.js # Arquivo principal da aplicação
│ ├── routes/
│ │ └── initiatives.js # Rotas da API
│ ├── services/
│ │ └── initiativesService.js # Lógica de negócio
│ └── __tests__/ # Testes automatizados
│ ├── initiativesService.test.js # Testes unitários
│ └── api.test.js # Testes de integração
├── package.json # Dependências do projeto
├── CONTRIBUTING.md # Guia de contribuição
├── CODE_OF_CONDUCT.md # Código de conduta
└── README.md # Documentação
Requisição:
curl http://localhost:3000/api/initiativesResposta:
[
{
"id": "1",
"title": "Programa de Reciclagem Comunitária",
"type": "recycling",
"description": "Coleta seletiva em bairros residenciais",
"carbonReduction": 500,
"status": "active"
},
{
"id": "2",
"title": "Reflorestamento Urbano",
"type": "ecological",
"description": "Plantio de árvores nativas em áreas urbanas",
"carbonReduction": 1200,
"status": "active"
}
]Requisição:
curl -X POST http://localhost:3000/api/initiatives \
-H "Content-Type: application/json" \
-d '{
"title": "Compostagem Comunitária",
"type": "recycling",
"description": "Transformação de resíduos orgânicos em adubo",
"carbonReduction": 800,
"status": "active"
}'Resposta:
{
"id": "3",
"title": "Compostagem Comunitária",
"type": "recycling",
"description": "Transformação de resíduos orgânicos em adubo",
"carbonReduction": 800,
"status": "active"
}Este projeto demonstra conceitos fundamentais de desenvolvimento de APIs:
- Criação de servidor HTTP com Express
- Roteamento de requisições
- Operações CRUD (Create, Read, Update, Delete)
- Organização de código em camadas (routes e services)
- Manipulação de dados em memória
- Testes unitários e de integração com Jest
O projeto inclui testes automatizados para garantir a qualidade do código.
npm testÚtil durante o desenvolvimento - os testes rodam automaticamente quando você salva um arquivo:
npm run test:watchMostra quais partes do código estão cobertas por testes:
npm run test:coverage| Arquivo | Tipo | O que testa |
|---|---|---|
initiativesService.test.js |
Unitário | Funções do serviço (getAll, getById, create, update, remove) |
api.test.js |
Integração | Endpoints HTTP (GET, POST, PUT, DELETE) |
PASS src/__tests__/initiativesService.test.js
PASS src/__tests__/api.test.js
Test Suites: 2 passed, 2 total
Tests: 25 passed, 25 total
Quer contribuir com o projeto? Leia nosso Guia de Contribuição para saber como começar!
Ao participar deste projeto, você concorda em seguir nosso Código de Conduta.
Este projeto foi criado para fins educacionais no contexto do Bootcamp GitHub Copilot da DIO.
Desenvolvido com 💚 para o Bootcamp GitHub Copilot – Código na Prática