Este projeto é uma API simples de sistema de reservas, desenvolvida com Node.js, Express e PostgreSQL. O foco principal do projeto é a implementação de testes unitários utilizando Jest e Supertest, destacando as habilidades em criação e teste de rotas para um CRUD completo.
- Criação de Reservas: Crie uma nova reserva fornecendo o nome do cliente, data da reserva, número de convidados e observações.
- Listagem de Reservas: Obtenha uma lista de todas as reservas.
- Consulta de Reserva por ID: Consulte uma reserva específica pelo seu ID.
- Atualização de Reservas: Atualize as informações de uma reserva existente.
- Exclusão de Reservas: Exclua uma reserva pelo seu ID.
- Node.js
- Express
- PostgreSQL
- Jest
- Supertest
- Moment.js
-
Clone o repositório:
git clone https://github.com/seu-usuario/sistema-reservas.git
-
Navegue até o diretório do projeto:
cd sistema-reservas
-
Instale as dependências:
npm install
-
Configure o banco de dados PostgreSQL:
- Crie um banco de dados chamado
reservas
. - Atualize as informações de conexão no arquivo
src/config/database.js
.
- Crie um banco de dados chamado
-
Execute as migrações para criar a tabela de reservas:
CREATE TABLE reservations ( id SERIAL PRIMARY KEY, customer_name VARCHAR(255) NOT NULL, reservation_date TIMESTAMP NOT NULL, number_of_guests INT NOT NULL, notes TEXT );
-
Inicie o servidor:
npm start
-
Execute os testes:
npm test
- URL:
/api/reservas
- Método:
POST
- Corpo da Requisição:
{ "customerName": "Aguinaldo Borges", "reservationDate": "2024-06-25T12:00:00Z", "numberOfGuests": 4, "notes": "Mesa perto da janela, por favor" }
- URL:
/api/reservas
- Método:
GET
- URL:
/api/reservas/:id
- Método:
GET
- URL:
/api/reservas/:id
- Método:
PUT
- Corpo da Requisição:
{ "customerName": "Aguinaldo Borges Updated", "reservationDate": "2024-06-25T12:00:00Z", "numberOfGuests": 4, "notes": "Mesa no canto" }
- URL:
/api/reservas/:id
- Método:
DELETE
Os testes são implementados usando Jest e Supertest. Eles garantem que todas as rotas da API funcionem corretamente e que os dados sejam manipulados como esperado.
Para executar os testes, use o comando:
npm test